Kotlin:从一个字段将对象列表映射到值列表的惯用方式?

时间:2018-08-17 01:02:08

标签: collections kotlin functional-programming

我将对象列表映射到对象字段之一的值的列表。

在这种情况下,变量languagesList<Language>,其中类Language的字段code的类型为String

val languageCodes:List<String> = languages.map { language -> language.code }

是否有一种更惯用的和/或更简洁的方法(除了省略列表的类型,为了清楚起见,在本示例中保留了该列表的类型)?

2 个答案:

答案 0 :(得分:2)

您或多或少都拥有它。为了更清楚一点,您可以取消language,而推荐使用it,它是lambda的单个参数的默认名称:

val languageCodes = languages.map { it.code }

但是您所拥有的也将同样有效,并且可能大致一样(这是主观的)。您会注意到我将我的值命名为“ languageCodes”,因为您无法重复使用languages

答案 1 :(得分:0)

我发现有关it keyword的内容是指lambda的隐式单个参数:

val languageCodes:List<String> = languages.map { it.code }

非常整洁!

引用官方文档:

lambda表达式只有一个参数是很常见的。 如果编译器可以自己找出签名,则可以不声明唯一的参数,而忽略->。该参数将以名称it隐式声明。