我的scala解释器/编译器有一种非常奇怪的行为。
Welcome to Scala version 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_45).
Type in expressions to have them evaluated.
Type :help for more information.
scala> class Foo {
| def bar = {
| println("Foo is bar!")
| }
| }
defined class Foo
scala> var f = Foo()
<console>:7: error: not found: value Foo
var f = Foo()
^
scala>
我也尝试将它放在一个文件main.scala
中class Foo {
def bar = {
println("foo is bar!")
}
}
object Main {
def main(args: Array[String]): Unit = {
println("ciao")
Foo()
}
}
$ scalac main.scala
main.scala:10: error: not found: value Foo
Foo()
^
one error found
来自Java / Python,我真的不明白为什么找不到简单的类Foo,特别是在解释器中。我错过了什么?
我在Mac OS X 10.9中运行通过自制程序安装的Scala 2.10.3
非常感谢
(当然,我正在使用SBT遇到同样的问题)
答案 0 :(得分:8)
您需要使用new
关键字创建新对象,或使用Foo
方法为您的班级apply()
添加随播广告对象,以创建新的{{1}对象。
Foo
(注意:如果你在REPL中这样做,你需要使用object Foo {
def apply() = new Foo()
}
// This is short syntax for Foo.apply()
val f = Foo()
同时粘贴类和对象。)
您还可以将:paste
作为案例类;当你这样做时,会自动创建一个Foo
方法的伴随对象。
apply
答案 1 :(得分:3)
scala> val f = new Foo()
f: Foo = Foo@525c6957