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
}

如何转换为 lambda 表达式?

谢谢。

4

2 回答 2

5

我认为您正在寻找map操作:

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

或者您可以使用默认参数名称it

data.map { it[key].asString }
于 2017-03-19T17:06:10.590 回答
3

如果你使用这个map函数,你可以把它写成一个表达式......

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

map函数接受一种类型的参数并将其转换为另一种类型。我还利用了 Kotlin 中的默认元素名称被称为 的事实it,因此我不必像在(比如说)Java 中那样明确定义一些东西。所以这说的是“对于 中的每个对象data,获取key值并调用.asString它。这会自动转换为List.

于 2017-03-19T17:08:59.070 回答