2017-03-19 6 views
2

데이터 클래스가 있고 일부는 List<String>을 초기화해야합니다. JsonArray (나는 Gson을 사용하고있다)의 값을 얻어야한다. 나는 람다 식으로 일을 변환 할 수있는 방법람다 식의 함수

private fun arrayToList(data: JsonArray, key: String): List<String> { 
    val list = mutableListOf<String>() 

    data.forEach { a -> 
     list.add(a[key].asString) 
    } 

    return list 
} 

:

나는이 기능을했다?

감사합니다.

답변

5

나는 당신이 map 작동을 찾고 생각 :

data.map { a -> a[key].asString } 

아니면 기본 매개 변수 이름 it 사용할 수 있습니다 : 당신이 map 기능을 사용하는 경우

data.map { it[key].asString } 
+1

대단히 감사합니다! – allnex

3

, 당신이 쓸 수를 단일 표현식으로 ...

private fun arrayToList(data: JsonArray, key: String): List<String> = 
    data.map { it[key].asString } 

map 함수는 한 유형의 인수를 취해 다른 유형으로 변환합니다. 나는 또한 Kotlin의 기본 요소 이름이 it이라고 불리는 사실을 이용하고 있습니다. 그래서 나는 Java에서 말하는 것처럼 명시 적으로 정의 할 필요가 없습니다. 그래서이 말하는 "data 각 개체를 들어, key 가치를 그것에 .asString를 호출합니다.이 자동으로 List로 변환됩니다.

+1

아주 너무 감사합니다! – allnex