4

这不编译的事实是否意味着它们不是一流的类型?

fun foo(s: String): Int = s.length
// This won't compile.
val bar = foo

有没有办法在不诉诸 OO 的情况下做到这一点?

4

2 回答 2

6

这不编译的事实是否意味着它们不是一流的类型?

不,它没有。

在 Kotlin 中,要将函数或属性作为值引用,需要使用可调用引用,但这只是获取函数类型的一种语法形式:

fun foo(s: String): Int = s.length

val bar = ::foo // `bar` now contains a value of a function type `(String) -> Int`

一旦你获得了这个价值,你就不会限制你如何使用它,这就是一流功能的意义所在。

于 2019-02-25T17:12:03.870 回答
4
于 2019-02-25T17:06:30.243 回答