lambda 表达式的函数

Function to lambda expression

我有一个数据class,我需要初始化一些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 表达式?

谢谢。

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

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

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

data.map { it[key].asString }

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

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

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