2013-11-15 3 views
5

이 가능한 패턴 매칭을 통해 케이스 클래스가 아닌 클래스의 서브 타입을 검출하는 것이다?없이 패턴 매칭

나는 자바 클래스를 기존 사용할 필요, 그래서 난 내 자신의 경우 클래스를 선언 할 수 없습니다.

답변

8

네! 유형에 패턴 매치를 할 수 있으므로 다른 하위 유형에 대해 다른 사례가있는 경우 원하는 행동을 얻을 수 있습니다.

trait A 
class B extends A 
class C extends A 

def f(a: A) = a match { 
    case b: B => "a B!" 
    case c: C => "a C!" 
} 

f(new B) // a B! 
f(new C) // a C! 
+0

또한, [여기] 자세한 내용은 (http://lampwww.epfl.ch/~emir/bqbase/2006/10/11/typecase.html) – goncalopp

+0

이 - 당신 덕분에 나는 그것이 "유형의 일치"라고, 또는 typecase이있어 발견 'A'는'Object' (또는'Any')가 될 수 있습니다. – goncalopp