我将对象列表映射到对象字段之一的值的列表。
在这种情况下,变量languages
是List<Language>
,其中类Language
的字段code
的类型为String
:
val languageCodes:List<String> = languages.map { language -> language.code }
是否有一种更惯用的和/或更简洁的方法(除了省略列表的类型,为了清楚起见,在本示例中保留了该列表的类型)?
答案 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
隐式声明。