kotlinc:未解析的引用

kknvjkwl  于 2023-02-13  发布在  Kotlin
关注(0)|答案(1)|浏览(180)

我有两个文件:
Main.kt

package A

fun gg1() = "hello"

Main2.kt

package B
import A.gg1

fun gg2() = gg1()

尝试编译代码:

iv@LAPTOP:~$ tree .
.
├── A
│   └── Main.kt
└── B
    └── Main2.kt

2 directories, 2 files
iv@LAPTOP:~$ kotlinc B/Main2.kt
B/Main2.kt:3:8: error: unresolved reference: A
import A.gg1
       ^
B/Main2.kt:5:13: error: unresolved reference: gg1
fun gg2() = gg1()
            ^
iv@LAPTOP:~$
    • 为什么会出现此错误以及如何修复?**
gxwragnw

gxwragnw1#

你只是把B/Main2.kt传递给kotlinc,如果你想让编译器知道它的存在,你还需要传递另一个文件。
导入不作为文件/路径引用工作:import A.gg1并没有告诉编译器去寻找A/Main.kt(它怎么知道文件名呢?)包名和文件路径之间没有技术关系,只是一个方便的约定。
实际上,导入主要是为了避免在代码中使用完全限定名(因此代码本身看起来更简单),但它们本身并不是必需的,如果愿意,您可以只使用声明而不使用导入(某些特定情况除外)。
也许这个相关的问题也能提供一些启示:How does import find the file path in Kotlin?

相关问题