函数到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
。