未找到Scala值

bes*_*sil 3 scala class 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> 
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的同样问题)

Jes*_*per 9

您需要使用new关键字创建新对象,或者使用创建新对象Fooapply()方法为类添加伴随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)