[nem-pl] Framework i tablice
Michal Moskal
malekith at pld-linux.org
Mon Nov 17 13:57:56 CET 2003
On Sat, Nov 15, 2003 at 04:17:16PM +0100, olszta at tey.pl wrote:
> Zaczalem tez pisac generator do naglowkow w Nemerlu, ale okazuje sie,
> ze trzeba dodac obsluge dla tablic, wiec ja dodaje.
>
> Bedzie jakos tak:
>
> mutable moje_typy : array (System.Type);
A co z tablicami wielowymiarowymi? IMHO trzeba to od razu przemyśleć,
żeby potem nie zmieniać.
Bo co z tablicami tablic to wiadomo:
array (array (System.Type))
Może jednak lepiej "System.Type []", "System.Type [,,]". Z drugiej
strony z array jest mniej specjalnej składni. Co do wielowymiarowych,
to może:
array (System.Type) // w C# System.Type []
array (1, System.Type) // w C# System.Type []
array (2, System.Type) // w C# System.Type [,]
array (array (System.Type)) // w C# System.Type [][]
> moje_typy [|"System.Int32"|] = System.Int32.GetType ();
moje_typy.["System.Int32"] <- System.Int32.GetType ()
moje_typy["System.Int32"] <- System.Int32.GetType ()
Ale nie jestem przekonany ;-)
> gdzie miedzy [| i |] leca parametry indekserow (poki co jeden).
Jeśli do tablic to inty, a do innych klas może być cokolwiek, jak
rozumiem?
> Nie wiem jak to powinno wygladac z mutowalnoscia, ale to sie
> wszystko przemysli.
IMHO wszystkie tablice są mutowalne. Znaczy to jest legalny kod:
def ar = Array.Create ("foo", 10);
ar.[3] <- "bar";
mutable ar2 = Array.Create ("qux", 10);
ar2.[3] <- "bar";
ar2 <- Array.Create ("quxx", 10);
Nazwa tablic (ar, ar2) definuje tylko wskaźnik do obiektu na heapie. To
czy można go zmieniać to jedna sprawa, to czy można zmieniać obiekt to
druga.
Przy czym z Array.Create (czy jak to się tam nazywa) będzie problem z
tablicami wielowymiarowymi. Nie wiem dokładnie jak to w .NET działa.
Oczywiście mogą być obiekty, które nie mają indeksera z set (tylko z
get), wtedy nie można przypisywać.
--
: 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