You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:30:04