Kotlin函数真的是第一类类型吗?
这不编译的事实是否意味着它们不是第一类类型Kotlin函数真的是第一类类型吗?,kotlin,first-class-functions,Kotlin,First Class Functions,这不编译的事实是否意味着它们不是第一类类型 fun foo(s: String): Int = s.length // This won't compile. val bar = foo 有没有办法不用OO就能做到这一点?您可以使用:: fun foo(s: String): Int = s.length val bar = ::foo 然后调用它: bar("some string") 这不编译的事实是否意味着它们不是第一类类型 fun foo(s: String): Int = s.
fun foo(s: String): Int = s.length
// This won't compile.
val bar = foo
有没有办法不用OO就能做到这一点?您可以使用:
:
fun foo(s: String): Int = s.length
val bar = ::foo
然后调用它:
bar("some string")
这不编译的事实是否意味着它们不是第一类类型
fun foo(s: String): Int = s.length
// This won't compile.
val bar = foo
不,没有
在Kotlin中,要引用函数或属性作为值,您需要使用,但它只是以下的语法形式:
一旦你得到了这个值,你就不受如何使用它的限制,这就是第一类函数的作用。kotlin不能直接推断类型,记住它仍然是静态类型的:使用
var bar:(String)->Int=::foo
Java中的静态方法,例如Files.IsDirectory
?我似乎不能以同样的方式让它工作。