Kotlin函数调用末尾大括号用法及两种joinToString调用的差异
Kotlin两种
joinToString调用写法的区别 你测试时运行表现一致的前提是*unsortedInputValues的元素类型为String*,二者本身的调用逻辑是有明确区别的:
- 第一种写法
unsortedInputValues.joinToString(","){it}:显式传入了transform转换函数,直接将元素本身作为拼接的字符串片段,要求元素必须是CharSequence(String是其子类)类型,否则会编译报错。 - 第二种写法
unsortedInputValues.joinToString(","):使用joinToString的默认参数,transform的默认逻辑为{ it.toString() },会先调用元素的toString()方法再拼接,支持任意类型的集合元素。
当集合元素为String时,it本身就是String,和it.toString()的返回结果完全相同,所以你测试时看不出差异。如果换其他类型的集合测试,差异就会非常明显,比如元素为Int的集合:
- 写法一:
listOf(1,2,3).joinToString(","){it}直接编译失败,Int不属于CharSequence类型,不符合显式传入的transform的返回值要求 - 写法二:
listOf(1,2,3).joinToString(",")正常运行,返回结果为"1,2,3"
内容的提问来源于stack exchange,提问作者Salvatore Coluccia
相关产品推荐
相关产品推荐

