首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotlin - KFunction3未解析引用

Kotlin - KFunction3未解析引用
EN

Stack Overflow用户
提问于 2018-05-01 14:49:20
回答 2查看 1.1K关注 0票数 2
代码语言:javascript
复制
val fooCtor = ::Foo

推断的fooCtor类型是KFunction3<Int, Int, Int, Foo>

例如,当我试图将某事显式地定义为KFunction3<...>

代码语言:javascript
复制
val fooCtor: KFunction3<Int, Int, Int, Foo> = ::Foo

IDE/编译器告诉我,KFunction3是一个未解决的引用。

为什么会这样?-我尝试在我的gradle.build文件中添加kotlin-reflect,但是没有运气。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-01 15:37:27

我尝试用IntelliJ IDEA 2017.2.6来重现您的问题:

代码语言:javascript
复制
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:

我在没有错误的构造函数中进行了同样的测试:

代码语言:javascript
复制
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,没有额外的库。

票数 1
EN

Stack Overflow用户

发布于 2018-05-02 06:59:25

通过KFunction3不是标准库的一部分,您必须手动导入它。

代码语言:javascript
复制
import kotlin.reflect.KFunction3

这帮我解决了你的问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50118648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档