Issue #14151 has been updated by greggzst (Grzegorz Jakubiak).


marcandre (Marc-Andre Lafortune) wrote:
> The library was originally written such that Matrices are immutable. I can't speak to the exact reason for this choice as I'm not the original author, but I suspect it was to go along with the all the other numeric objects being immutable. Makes it more natural to do functional programming too.

I see your point but Arrays are immutable as well following this idea but you can change any element at any position in given Array and there's nothing wrong with that.

>I wonder what is that usecase.
The general use case is the same as in Arrays apart from that you can change Matrix elements in languages like Matlab as well.

>You can build the values from arrays and call Matrix.[]:

>values = Array.new(5) { Array.new(5, 0) }
>values[2][2] = 42
>m = Matrix[values]

It's just when you work with Matrix and you want to change one element at the time it doesn't make any sense doing it by creating arrays cause you have to create the whole Matrix again even though you've got some elements already filled in. This is how I see things. 





----------------------------------------
Feature #14151: Make Matrix#[]= public method
https://bugs.ruby-lang.org/issues/14151#change-68261

* Author: greggzst (Grzegorz Jakubiak)
* Status: Feedback
* Priority: Normal
* Assignee: marcandre (Marc-Andre Lafortune)
* Target version: 
----------------------------------------
I don't even understand why this method hasn't been public since the beginning. I've come to a point when I have to create a matrix in a specific way using row and column indices and I can't use #build with a block because then indices go from the beginning of matrix whereas I have to from the center of the matrix. So what I wanted to do is to create a zero matrix and the fill it in a proper way but I can't without using #[]=. I know I can reopen class and that's what I'm doing but this just doesn't make sense. If we can change elements in an array like so using #[]= then why matrices can't use that as well?



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>