2014-04-04 2 views
1

스칼라 인터프리터/컴파일러에서 매우 이상한 동작이 발생합니다.스칼라 값을 찾을 수 없습니다.

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 

에 넣어 시도 통역사. 내가 뭘 놓치고 있니? 내가 스칼라 2.10.3을 실행하는거야

는 맥 OS X에서 사제를 통해 10.9

덕분에 많은

답변

6

새 개체를 만들려면 new 키워드를 사용하거나 apply() 메서드를 사용하여 클래스 Foo에 대한 컴패니언 개체를 추가하여 Foo 개체를 새로 만들어야합니다.

object Foo { 
    def apply() = new Foo() 
} 

// This is short syntax for Foo.apply() 
val f = Foo() 

(참고 : REPL에서이 작업을 수행 할 경우, 당신은 클래스와 동시에 객체를 모두 붙여 :paste를 사용해야합니다).

Foo 사례 클래스도 만들 수 있습니다. 그렇게하면 apply 메서드가있는 동반자 개체가 자동으로 만들어집니다. 파이썬 나를 파괴

case class Foo 

val f = Foo() 
+0

감사 – besil

3
scala> val f = new Foo() 
f: Foo = [email protected] 
(I 물론, SBT를 사용하여, 동일한 문제에 봉착) 설치
+2

세상에 오 ... = ( 고마워요! 자세한 설명 – besil

관련 문제