[nem-pl] Framework i tablice
"Paweł W. Olszta"
Pawel.Olszta at adv.pl
Tue Nov 18 11:04:30 CET 2003
Michal Moskal wrote:
>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 [][]
>
>
Może array <2> (System.Type)? Chociaż też nie. [,] jest świetną notacją,
tylko chyba
raczej nie pasuje do Nemerle. Przemyślimy to dzisiaj.
>>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 ;-)
>
>
moje_typy [|"System.Int32"|] <- System.Int32.GetType ();
[x] nie możemy -- bo to oznacza listę jednoelementową.
>>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?
>
>
Tak, tablica to taki obiekt z indekserem typu int -> 'a. W hasztablicy
jest object -> 'a.
Mogą być wielowymiarowe chyba, później popatrzę do definicji C#.
>>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ć.
>
>
Dobrze prawisz.
--
Pawel W. Olszta
<olszta at adv.pl>
"No," said the elevator miserably, "of the future..."
More information about the devel-pl
mailing list