我正在学习Scala,如果这是一个愚蠢的问题,请耐心等待。
我有这个包和一个类(把它简化为最简单的版本):
package Foo {
class Bar {}
}
然后在main.scala
文件中我有:
import Foo.Bar
object test {
def main() {
val b = new Bar()
}
}
为什么我会这样:
test.scala:1:错误:Bar不是Foo的成员
它指向import
声明。
答案 0 :(得分:3)
scalac
是scala编译器。 Foo.bar
需要编译才能使用它,因此您不能将main.scala作为脚本运行。
代码中的另一个错误是main
方法需要
def main(args: Array[String]) { ...
(或者您可以改为test extends App
并取消main
方法。)
我可以确认你是否将上面的两个文件放在一个空目录中(对主方法签名进行了更正)并运行scalac *
后跟scala test
它正确运行。
答案 1 :(得分:1)
最可能的解释是你没有编译第一个文件,或者你在编译时做错了什么。假设两个文件都在当前目录中,那么这应该可以工作:
scalac *.scala
它应该在当前目录中生成一些类文件,以及它将创建的Bar.class
目录中的Foo
文件。
答案 2 :(得分:0)
要快速测试IntelliJ中的scala代码(使用Scala plugin),只需键入 Ctrl + Shift + F10 :
请注意,对于测试Scala类,您还有其他选择,IntelliJ中也支持这些选项: