[nem-pl] [martin.odersky@epfl.ch: [Caml-list] [ANN] The Scala
programming language]
"Paweł W. Olszta"
Pawel.Olszta at adv.pl
Fri Jan 23 08:37:58 CET 2004
Kamil Skalski wrote:
> Friday 23 of January 2004 00:46, Michal Moskal wrote:
>
>>- Pattern matching over class hierarchies unifies functional and
>> object-oriented data access. It greatly simplifies the processing of
>> XML trees.
>
>
> To jest dobre, choÄ? nie wiem co dokĹ?adnie majÄ? na myĹ?li. Instynktownie
> wyczuwam, Ĺźe to musi byÄ? fajne.
Chyba trochę tymatch, a trochę nasz matching po wariantach (to ta część
o XML, u nich to się nazywa case classes), jak się przyjrzeć językowi ;)
Do tego pierwszego w tej chwili u nas musisz napisać:
match (x.GetType ().FullName) { }
U nich:
object MatchTest2 with Application {
def match(x: Any): Any = x match {
case 1 => "one"
case "two" => 2
case y: Int => "scala.Int"
}
}
U nas jest:
match (x.GetType ().FullName) {
| "System.Int32" when (x : int) == 1 =>
("one" : object)
| "System.String" when (x : string) == "two" =>
(2 : object)
| "System.Int32" => "int"
}
U nas będzie (w release 0.2 raczej) zapewne tak:
tymatch (x) {
| (int as x) when x == 1 => ("one" : object)
| (string as x) when x == "two" => (2 : object)
| int as x => "int"
}
Widać, że tymatch to tak naprawdę będzie makro po matchach, a jeśli
zrobić je za pomocą System.Type::FullName to na dodatek skorzysta z
optymalizacji matchingu po stałych (które być może będą heh).
--
My opinions may have changed, but not the fact
that I am right. -- Ashley Brilliant
More information about the devel-pl
mailing list