我有一个sortedBy{}声明打算List按元素的长度对a 进行排序String:
var animals: List<String> = listOf("tiger", "cat", "dragon", "elephant")
fun strLength(it: String) = it.length
animals.sortedBy { strLength(it) }
animals.forEach {println(it)}
Run Code Online (Sandbox Code Playgroud)
但是它只打印初始订单。知道为什么吗?
您必须分配 的输出sortedBy。
animals = animals.sortedBy { strLength(it) }\nRun Code Online (Sandbox Code Playgroud)\n\n因为,与 Kotlin 中的许多其他函数一样,sortedBy\xe2\x80\x99 不会改变输入并遵守不变性。所以它返回一个新的集合。因此它可以减轻副作用。Kotlin 鼓励这种不可变的方法。但是,如果需要,这些集合还有可变的对应项。
| 归档时间: |
|
| 查看次数: |
920 次 |
| 最近记录: |