[nem-pl] Kilkla temacików
Michal Moskal
malekith at pld-linux.org
Sun Jan 4 19:38:03 CET 2004
On Sun, Jan 04, 2004 at 06:51:50PM +0100, Kamil Skalski wrote:
> > Osobny przebieg *parsowania*. Zauważ, że musiałbyś mieć hack w rodzaju
> > liczenia otwartych/zamkniętych nawiasów zamiast normalnego parsowania
> > (bo nie wiesz, że masz np. takie while jakoś inaczej parsować).
>
> W zasadzie to makra będą tylko w toplevel, więc przy odpowiednim
> uporządkowaniu parsowania (najpierw wszystkie deklaracje, potem wyrażenie)
Jak można parsować najpierw deklaracje a potem wyrażenia? Zapmiętywać
sobie tokeny na liście? A skąd wiadomo kiedy się wyrażenie kończy?
> > Można też zastanowić się nad oróżnieniem foo (bar) od foo (bar, "")
> > (tj. nie podania default argumentu, od padania go akurat w formie
> > defaultowej). Można by to kodować jako option. Ale to nie ma chyba
> > głębszego sensu.
>
> Hehe, darujmy sobie takie komplikacje:
> 1. params może być tylko jako OSTATNI parametr (w C#) i my też tak to zrobimy,
> bo zresztą inaczej jest niejednoznacznie
Oczywiście.
> 2. opcjonalne parametry też zrobimy po ludzku, czyli tylko ostatnie
Tu też nie widze przeciwskazań, co do deklaracji. Bo co do wywołania to
tak:
public foo (a : int, b : int,
do_foo = false : bool,
do_bar = false : bool,
do_baz = false : bool) { ... }
// może lepiej do_foo : bool = false ?
Wywołanie:
foo (1, 2, do_bar = true);
foo (1, 2, do_bar = true, do_foo = false);
Dopiero z nazwanymi argumentami można fajne rzeczy z default parameters
robić ;)
> 3. podobno C#powcy przyznają, że opcjonalne parametry to tylko cukier
> syntaktyczne na overloading i że można je sobie zrobić właśnie pisząc kilka
> wersji danej funkcji. Wydaje się, że nie ma nawet sensu "tworzyć" tych
> liniowo wielu nowych funkcji, tylko zakodować ten mechanizm w overloading
> enginie.
Pewnie tak.
Myślałem jeszcze nad problemem, że są klasy, które nie mają żadnej
sensownej defaulotwej wartości lub konstruje się je w sposób wykraczający
poza to co można zapisać w atrybutach. Ale od tego mamy null.
> > Oczywiście opcjonalne argumenty w makrach to tylko kwestia składni i
> > jakiegoś preprocessingu.
>
> Ale fajnie byłoby mieć to wszędzie - to często ułatwia dostosowywanie API do
> zmian, bez konieczności przerabiania całego kodu.
Uhm.
--
: Michal Moskal :: http://www.kernel.pl/~malekith : GCS {C,UL}++++$ a? !tv
: When in doubt, use brute force. -- Ken Thompson : {E-,w}-- {b++,e}>+++ h
More information about the devel-pl
mailing list