代码之家  ›  专栏  ›  技术社区  ›  Pierre Henry

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

  •  1
  • Pierre Henry  · 技术社区  · 6 年前

    我将对象列表映射到对象的某个字段的值列表。

    languages 是一个 List<Language> Language 有一个字段 code 那是典型的 String

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

    有没有一种更习惯和/或更简洁的方法来做到这一点(除了省略列表的类型之外,为了清楚起见,我在本例中留下了列表的类型)?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Enzokie terencey    6 年前

    你或多或少地拥有它。为了更清楚一点,你可以 language 赞成 it ,lambda的单个参数的默认名称:

    val languageCodes = languages.map { it.code }
    

    languageCodes “,作为您对 languages 不会编译。

        2
  •  0
  •   Pierre Henry    6 年前

    我发现了 it keyword 指lambda的隐式单参数:

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

    引用官方文件:

    lambda表达式只有一个参数是很常见的。 如果编译器可以自己计算出签名,则不允许声明唯一的参数并省略 -> . 参数将在名称下隐式声明 .