fun main() {
fun evenFn(num: Int): Boolean {
return num % 2 == 0
}
val evenFn = fun(num: Int) = num % 2 == 0
val list = listOf(1, 2, 3, 4, 5, 6)
println(list.filter(evenFn))
println(list.filter { evenFn(it) })
}
如何声明两个具有相同名称的
evenFns
(一个存储在变量中,另一个刚刚定义),我必须以不同的方式调用它们?在JavaScript中,这样做会引发错误,指出已经有一个evenFn
。有人可以解释为什么编译器将两个
evenFns
区别对待吗? 最佳答案
fun evenFn
是一种方法; val evenFn
是一个碰巧具有函数类型的局部变量。在Kotlin(以及Java,C#等)中,允许在范围内具有相同名称的方法和局部变量,并且局部变量的类型不影响这些规则。