val fooCtor = ::Foo推断的fooCtor类型是KFunction3<Int, Int, Int, Foo>。
例如,当我试图将某事显式地定义为KFunction3<...>时
val fooCtor: KFunction3<Int, Int, Int, Foo> = ::FooIDE/编译器告诉我,KFunction3是一个未解决的引用。
为什么会这样?-我尝试在我的gradle.build文件中添加kotlin-reflect,但是没有运气。
发布于 2018-05-01 15:37:27
我尝试用IntelliJ IDEA 2017.2.6来重现您的问题:
fun main(args: Array<String>) {
fun foo(x: Int, y: Int, z: Int) = x % 2 != 0
val f = ::foo
val f1: KFunction3<Int, Int, Int, Boolean> = ::foo
}这样编译就没有任何问题。
为什么返回类型是Foo in KFunction3?您的Foo函数返回自己吗?
更新1:
我在没有错误的构造函数中进行了同样的测试:
class Foo (x: Int, y: Int, z: Int) {}
fun main(args: Array<String>) {
val ft1 = ::Foo
val ft2: KFunction3<Int, Int, Int, Foo> = ::Foo
}使用Kotlin 1.2.31,没有额外的库。
发布于 2018-05-02 06:59:25
通过KFunction3不是标准库的一部分,您必须手动导入它。
import kotlin.reflect.KFunction3这帮我解决了你的问题。
https://stackoverflow.com/questions/50118648
复制相似问题