이 코드는 컴파일 오류 제공 :스칼라 : 유형의 컴파일 오류 선언 계속 모든 => 아무것도
import scala.util.continuations._
object CTest {
def loop: Nothing = reset {
shift {c: (Unit => Nothing) => c()}
loop
}
def main(argv: Array[String]) {loop}
}
오류 메시지 :
error: type mismatch;
found : ((Unit) => Nothing) => (Unit) => Nothing
required: ((Unit) => B) => (Unit) => Nothing
을하지만이 코드는 예상대로 작동합니다
import scala.util.continuations._
object CTest {
def loop: Nothing = reset {
shift {c: (Unit => Any) => c.asInstanceOf[Unit => Nothing]()}
loop
}
def main(argv: Array[String]) {loop}
}
질문 : 스칼라 컴파일러가 왜 싫어하는가 나 co Any => Nothing 유형의 ntinuations?
'루프'가 자신이 생각하는대로하고 있는지 궁금합니다. 대신'() => loop' 또는'loop _'을 써보십시오. –
'loop'의 유일한 목적은 끝없이 반복적으로 호출하는 것입니다 (다른 메소드를 호출하지만이 코드는 예제를 단순화하기 위해 생략되었습니다). –