不编译的事实是否意味着它们不是一流的类型?
fun foo(s: String): Int = s.length
// This won't compile.
val bar = foo
有没有一种方法可以不借助OO?
答案 0 :(得分:6)
不编译的事实是否意味着它们不是一流的类型?
不,不是。
在Kotlin中,要将函数或属性作为值引用,您需要使用callable references,但这只是obtaining a value中function type的语法形式:>
fun foo(s: String): Int = s.length
val bar = ::foo // `bar` now contains a value of a function type `(String) -> Int`
一旦获得了这一价值,您就不会受到使用它的方式的限制,这就是一流的功能。
答案 1 :(得分:4)
You can use reference to the function ::
上工作:
fun foo(s: String): Int = s.length
val bar = ::foo
然后调用它:
bar("some string")