我将保持非常简单。为什么起作用:
var heights = arrayOf(1,2,3,4,2,3,4)
var sortedHeights = heights.copyOf()
sortedHeights.sort()
for (i in 0..heights.size-1)
{
println(sortedHeights[i])
}
但这不是吗?
var heights = arrayOf(1,2,3,4,2,3,4)
var sortedHeights = heights.copyOf().sort()
for (i in 0..heights.size-1)
{
println(sortedHeights[i])
}
如您所见,唯一的区别是与sortedHeights数组的链接。如果copyOf()返回一个数组,我是否应该可以将它与sort()链接起来?
答案 0 :(得分:3)
forpas回答了为什么您的代码在注释中不起作用,但是您仍然可以使用scope functions来允许链接:
var sortedHeights = heights.copyOf().apply { sort() }
或
var sortedHeights = heights.copyOf().also { it.sort() }
答案 1 :(得分:3)
有一个内置的函数既执行copyOf()
又执行排序:sortedArray()
您可以将代码行更改为:
var sortedHeights = heights.sortedArray()
(但是除非您打算更改变量的值,否则您应该真正使用val
而不是var
)