[nem-pl] Dziedziczenie, i makra c.d.

Kamil Skalski nazgul at omega.pl
Fri Mar 19 09:28:45 CET 2004


Friday 19 of March 2004 03:47, Pawel Rozanski wrote:
> Cześć,
>    Czy można dziedziczyć konstruktor? a z klasy C#?

Konstruktor jest dziedziczony pewnie w momencie gdy nie ma żadnego nowego 
pola.. ale nie jestem tego pewien. Wiem np. że automatycznie dorabiane są 
konstruktory z bazowymi polami (jak również z wszystkimi polami, jeśli nie 
został żaden ręcznie podany):
class A { a : int }  <= A(1)
class B : A { b : int }   <= B(1,1), B(1)

>    dziala.. ku mojemu zdziwieniu po dodaniu
>    namespace A { namespace B { namespace C {
>    .. makra
>    }}}
>
>    Tez dziala.. jakby wogole nie bylo B i C
>    tzn A.B.C.makro nie widac, ale A.makro dalej dziala

No cóż, makra jeszcze w ogóle nie są wrażliwe na namespace'y - wywoływane są 
całkowicie 'by name', czyli w dowolnym miejscu możesz napisać samo 'makro' i 
zadziała. W makrach w ogóle dużo nie ma jeszcze, bo się Michał przez ostatnie 
trzy tygodnie obija... ;-)


>    Idac tropem zerknolem co sie stanie jak dodam
>    namespace do kolekcji klas, i tu jest tez dziwnie
>
>    namespace A {
>    ..wariant..
>    ..klasy..
>    }
>
>    a po
>
>    namespace A {  namespace B {
>    ..wariant..
>    ..klasy..
>    }}
>
>    nagle klasa nie widzi typu ktory zostal zdefiniowany
>    przez wariant..

To już prawdopodobnie jest bug - spróbuj zgłosić najkrótszy program w którym 
takie coś się dzieje.

>
>    Odkrylem ze jak funkcja chce oddzielne parametry to mozna
>    ja wywolac jako ala(cos,cos), a jak chce krotke parametrow
>    to tak samo lub ala((cos,cos)) ... to jakis skrot ?
>
>    a  makra w tym sie zachowuja dobrze (chyba) jak
>    chca krotek to trzeba makro((a,b))

Z tym przekazywaniem parametrów to jest niezła jatka, już jest na ten temat 
bug zgłoszony, ale chyba dotyczy czego innego. Niewątpliwie to co opisujesz 
jest niespójne. Wg mnie funkcja nie powinna akceptować parametrów i robić z 
nich sobie krotkę... powinno być wyraźne rozróżnienie w typie funkcji
a * b -> c  i (a*b) -> c
W makrach jest zupełnie osobna procedura na parametry, którą ja robiłem i 
wydaje się działać lepiej, mieć więcej features itd. Za to co jest w głównej 
części języka nie odpowiadam.


> P.S. Mam nadzieje, ze te moje raporty sie do czegos przydaja,
> nie ma pliku TODO, wiec ciezko sie polapac czego nie ma, a co
> jest zle. Niewazne.... dzieki za wyklarowanie.

Oczywiście. Wielkie dzięki za testy i zgłoszone uwagi. Na ich podstawie albo 
uzupełniamy dokumentację, albo dodajemy bug raporty:
http://nemerle.org/bugs
(sam możesz też dodawać zgłoszenia, najlepiej z krótkimi programami 
zawierającymi błąd)

Dzięki.
Kamil





More information about the devel-pl mailing list