Разработчик класса Matrix
, должно быть, был поклонником неизменяемых структур данных и функционального программирования. Да вы правы.
В любом случае, есть простое решение для того, что вы хотите. Используйте Matrix
для того, что он может сделать, затем просто используйте .to_a
, чтобы получить настоящий массив.
>> Matrix.identity(2).to_a
=> [[1, 0], [0, 1]]
См. также Числовой Ruby Narray. Вы также можете изменить класс, чтобы добавить больше поведения. Если вы это сделаете, исправьте подкласс Matrix. (Есть проекты библиотек Ruby, которые хотят большего поведения от классов require
d, поэтому они напрямую изменяют их, делая свои новые файлы несколько токсичными. Они могли бы так легко просто исправить подкласс или класс-одиночку.)
О, и khellll (:-), вероятно, хотел бы, чтобы я сказал, что вполне возможно, что вы можете сделать то, что вам нужен в функциональном стиле. То есть путем создания новых объектов, а не путем изменения старых.
person
DigitalRoss
schedule
28.09.2009