코드 http://www.scala-lang.org/node/112에서 코드를 시도하고 하나를 던져야하는 것처럼 보이지 않는 무언가에 대해 일치 오류가 나타납니다.스카라 unapply와 일치 오류
이 원래 코드 : 21
object TwiceTest extends Application {
val x = Twice(21)
x match { case Twice(n) => Console.println(n) } // prints 21
val y = 21
y match { case Twice(n) => Console.println(n) } // throws scala.MatchError: 21 (of class java.lang.Integer)
}
사건 또는 홀수해야 : 난 그냥 홀수를 통과 할 때 발생하는 테스트 몇 줄을 추가
object Twice {
def apply(x: Int): Int = x * 2
def unapply(z: Int): Option[Int] = if (z%2 == 0) Some(z/2) else None
}
object TwiceTest extends Application {
val x = Twice(21)
x match { case Twice(n) => Console.println(n) } // prints 21
}
또한 내가 말할 수있는 한 객체의 적용되지 않는 메소드에 의해 처리 될 수 있습니다. 누군가 이것이 왜 그런지 설명 할 수 있습니까?