Tak, faktycznie to jest dobry kandydat. Mam też wrażenie, że robi się
częsty błąd przedstawiają PM jako "case on steroids". To nie jest do
końca prawda.
np. coś co się wydaje 'zwykłym inicjowaniem zmiennych w scali:
val (a,b) = (1,2)
jest w rzeczywistości dopasowaniem wzorca i związaniem zmiennych z
wartościami typu Tuple2. I nie ma zupełnie nic wspólnego z case ;)
Można równie dobrze użyć tego do ekstrakcji i związania ze zmienną
jedynie pierwszej wartości.
val onetwo = (1,2)
val (fst,_) = onetwo
val (_,snd) = onetwo
działa tu po prostu unapply
Jeszcze lepszym przykładem jest scalowy regex:
np.
scala> val Date = """(\d{2})-(\d{2})-(\d{4})""".r
scala> val Date(day, month, year) = "27-11-2010"
day: String = 27
month: String = 11
year: String = 2010
Tak tu jest faktycznie sporo pole do popisu, jeśli chodzi o
wyjaśnianie zawiłości języka. Na szczęście bardzo dobrze można to
wyjaśnić na przykładzie Haskella, gdzie wszystko jest praktycznie
dopasowaniem wzorca :).
Dzięki za wskazówkę n/t
scala-tribes.org!
pozdrawiam
A.
On 27 Lis, 18:21, Przemek Pokrywka <
przemyslaw.pokry...@gmail.com>
wrote:
> Hej. Kilku moich kolegów (programistów Javy) w osłupienie wprawił
> pattern matching - zwłaszcza to, że we wzorcu pojawiała się nagle
> niezadeklarowana wcześniej zmienna (~ wolna), z którą wiązana była w
> wyniku dopasowania wzorca określona wartość.
>
> Pozdrawiam
> Przemek (WrASSE)
>
> Zarejestrujcie się nahttp://
www.scala-tribes.org/p/tribes.html