Forum matematyczno-informatyczne
Przypominam państwu projektantom i implementatorom, że zmieniając z zewnątrz elementy niektórych kolekcji Smalltalka musimy wywoływać metodę Collection>>rehash, aby zapewnić prawidłowe wyszukiwanie elementów. Jeśli się nie mylę, dotyczy to co najmniej kolekcji Set, a przez to i Dictionary.
Projekt się chyba obędzie bez wzmianki o tym, ale warto o tym pamiętać, żeby nie przypomnieć sobie nagle kiedy już kolekcje nie będą się zachowywać jak powinny w czasie implementacji
Offline
Gość
No ale wiele problemów da się rozwiązać prosto i zgrabnie, czarując kolekcjowymi metodami. Np. jak się zmienia kolekcję przez collect to żadnych rehashów nie trzeba już robić no nie?
Przy collect: nie trzeba robić rehasha, bo collect: tworzy nową kolekcję, a nie zmienia starą.
Rehash jest potrzebny na przykład jak masz na przykład instancję klasy Pole, która ma atrybut zawartość, na którym jest zbiór obiektów gry. Niech obiekty się psują z czasem jak specyfikacja przykazała - nagle zmienia się (z zewnątrz) jakość przedmiotu w tej kolekcji, a przez to zmienia się hash tego przedmiotu, no i kolekcja oparta na hashtables już nie zobaczy naszej deski albo czego tam.
("Collect" to fajny nick, ale ja i tak dojdę kto jest kim, a potem zablokuję możliwość pisania bez rejestracji )
Offline