尝试以下代码:
fun foo(arr: IntArray): Boolean {
arr.also(::sort)
}
IDEA告诉我,排序功能需要导入,就像这样:
import java.util.Arrays.sort
它叫做:
public static void sort(int[] a) {
DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);
}
但是它应该直接使用kotlin函数,就像这样:
fun bar(arr: IntArray): Boolean {
arr.also { it.sort() }
}
它叫做:
public actual fun IntArray.sort(): Unit {
if (size > 1) java.util.Arrays.sort(this)
}
在这种情况下,为什么::语法无法调用kotlin函数?
答案 0 :(得分:4)
这是因为::
语法是指顶级函数。如果您想推荐IntArray.sort()
,则必须写arr.also(IntArray::sort)
更新:您还可以使用this
语法调用::
的方法