On Apr 23, 2006, at 4:59 PM, James Edward Gray II wrote:
Another random idea from an obvious Ruby nut:
set_data([...], ...)
feels more natural as
data[...] = ...
It does, but it won't quite work as it is. Right now the method data simply returns the array @rows, whose entries are each arrays, one corresponding to each data row. Now, suppose @rows = [[1,2,3],[4,5,6]] and you want to set the cell B3 to some value. Then you would try to do: data[2,1]=7, but this would change @rows into [[1,2,3],[4,5,6],7] instead of [[1,2,3],[4,5,6],[nil,5,nil]] set_data calls another method that makes sure to create any new rows necessary, and fill the required entries with "". So, in this case it would return [[1,2,3],[4,5,6],["",5,""]]. Actually, all those numbers will be strings because that's how the program deals with them. I also want to avoid having nils in the array. Basically, I made an implementation choice to make sure the array is always "full". Maybe this was a mistake, but it made iterating over rows and columns easier without having to deal with nils. Anyway, point is that this would require overriding "data" to somehow return something that could call this "fill rows" function based on the coordinates of the point [2,1] or whatever that is asked of you.
Btw, ideally I would like to be able to also say: data["B3"]=7 instead. It would have to way for the next iteration, which will probably happen in two months.
I guess my problem is that I cannot define a method like: def data[]=(row,col)
or can I?
James Edward Gray II
Haris