函数到lambda表达式

我有一个数据类,我需要初始化一些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 } 

或者你可以使用它的默认参数名称:

 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