2013-11-15 8 views

Odpowiedz

8

Tak! Możesz dopasować wzór do typu, więc jeśli masz różne przypadki dla różnych podtypów, możesz uzyskać zachowanie, którego szukasz:

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

To wygląda świetnie, dzięki! Dzięki tobie znalazłem, że nazywa się "typ matching" lub typecase - jest więcej informacji [tutaj] (http://lampwww.epfl.ch/~emir/bqbase/2006/10/11/typecase.html) – goncalopp

+0

. warto wiedzieć, że "A" może być "Obiektem" (lub "Dowolnym") – goncalopp

Powiązane problemy