未找到Scala值

时间:2014-04-04 21:39:48

标签: class scala sbt

我的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遇到同样的问题)

2 个答案:

答案 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