Projektant klasy Matrix
musiał być fanem niezmiennych struktur danych i programowania funkcjonalnego. Tak, masz rację.
W każdym przypadku istnieje proste rozwiązanie tego, co chcesz. Użyj Matrix
, aby dowiedzieć się, co może zrobić, po prostu użyj .to_a
, aby uzyskać prawdziwą tablicę.
>> Matrix.identity(2).to_a
=> [[1, 0], [0, 1]]
Zobacz także Numerical Ruby Narray. Możesz też monkeypatch the class, aby dodać więcej zachowań. Jeśli to zrobisz, załóż podklasę macierzy. (Istnieją projekty bibliotek w języku Ruby, które wymagają więcej zachowań z klas require
d, więc bezpośrednio je modyfikują, co spowoduje, że ich nowe pliki będą nieco toksyczne. Mogłyby tak łatwo po prostu załatać podklasę lub klasę singleton.)
Aha, i khelll (:-) prawdopodobnie chciałbym, żebym powiedział, że jest całkiem możliwe, abyś zrobił to, co chcesz in a functional style. To znaczy, tworząc nowe obiekty, a nie modyfikując stare.
Czy możesz wyjaśnić, co z tym robisz? – khelll
Szukam "złych" wierszy i kolumn (które w całości składają się z zer), a następnie chciałbym je usunąć. Mam już kod do tego, ale napisany całkowicie przez Arrays. Mimo to staram się znaleźć bardziej precyzyjne i ładne rozwiązanie. – gmile