How come the Matrix
class has no methods to edit its vectors and components? It seems like everything inside a matrix can be read but not written. Am I mistaken
The designer of class Matrix
must have been a fan of immutable data structures and functional programming. Yes, you are correct.
In any case, there is a simple solution for what you want. Use Matrix
for what it can do, then, just use .to_a
to get a real array.
>> Matrix.identity(2).to_a
=> [[1, 0], [0, 1]]
See also Numerical Ruby Narray. You could also monkeypatch the class to add more behavior. If you do this, please patch a subclass of Matrix. (There are Ruby library projects out there that want more behavior from require
d classes so they directly modify them, making their new files somewhat toxic. They could have so easily just patched a subclass or singleton class.)
Oh, and khelll (:-) would probably like me to say that there is quite possibly a way for you to do what you want in a functional style. That is, by creating new objects rather than by modifying the old ones.