lambda表达式的函数

时间:2017-03-19 17:02:25

标签: lambda kotlin data-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表达式?

感谢。

2 个答案:

答案 0 :(得分:5)

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

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

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

data.map { it[key].asString }

答案 1 :(得分:3)

如果您使用map功能,则可以将其写为单个表达式...

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

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