2012-04-27 3 views
0

으로는, scalac, 로 쉽게 컴파일 Foo.scala에 말을하지만 난 내가 REPL을 부팅하고 :load Foo.scala 말을 오류의 눈보라를 얻을. 이것이 표준이며 문서화되어 있지만 관련 정보를 찾을 수없는 것 같습니다. 코드 scalac로 컴파일하지만 나는 몇 가지 코드가 REPL

abstract class BST[A](implicit cmp: A => Ordered[A]) { 
    def fold[B](f: (B, A) => B, acc: B): B = { 
    this match { 
     case Leaf()  => acc 
    }     
    } 
} 

case class Leaf[A]()(implicit cmp: A => Ordered[A]) extends BST[A] 

을 그리고 난 그렇게 같은 오류를 얻을 :

파일은 다음과 같습니다

scala> :load BST3.scala 
Loading BST3.scala... 
<console>:10: error: constructor cannot be instantiated to expected type; 
found : Leaf[A(in class Leaf)] 
required: BST[A(in class BST)] 
      case Leaf()  => acc 
       ^

답변

2

그것은 파일 블록으로 블록을 해석하는 :load 같은 시도를 보인다. 블록이 상호 종속적이므로 문제가됩니다.

스칼라 함께 컴파일에 대한 REPL에 여러 개의 블록을 붙여 "붙여 넣기 모드"를 사용해보십시오 : 팁 재에 대한

scala> :paste 

// Entering paste mode (ctrl-D to finish) 

abstract class BST[A](implicit cmp: A => Ordered[A]) { 
    def fold[B](f: (B, A) => B, acc: B): B = { 
    this match { 
     case Leaf()  => acc 
    }     
    } 
} 

case class Leaf[A]()(implicit cmp: A => Ordered[A]) extends BST[A] 

// Exiting paste mode, now interpreting. 

defined class BST 
defined class Leaf 
+0

감사 : 붙여 넣기 모드! –