我的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>
Run Code Online (Sandbox Code Playgroud)
我也尝试将它放在一个文件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
Run Code Online (Sandbox Code Playgroud)
来自Java/Python,我真的不明白为什么找不到简单的类Foo,特别是在解释器中.我错过了什么?
我在Mac OS X 10.9中运行通过自制程序安装的Scala 2.10.3
非常感谢
(当然,我有使用SBT的同样问题)
您需要使用new关键字创建新对象,或者使用创建新对象Foo的apply()方法为类添加伴随Foo对象.
object Foo {
def apply() = new Foo()
}
// This is short syntax for Foo.apply()
val f = Foo()
Run Code Online (Sandbox Code Playgroud)
(注意:如果在REPL中执行此操作,则需要使用:paste同时粘贴类和对象).
你也可以做Foo一个案例课; 当您这样做时,apply将自动创建一个带方法的伴随对象.
case class Foo
val f = Foo()
Run Code Online (Sandbox Code Playgroud)