28136

[code]

    ary = [[10,15,'s'], [20,25], [30,35]] 
    ary.each do |elm1, elm2, elm3| 
    elm1=elm1/5 
    end 
    p ary
    
[/code]

結果が`[[10, 15, "s"], [20, 25], [30, 35]]`になります。  
`[[2, 15, "s"], [4, 25], [6, 35]]`にする方法を教えて下さい。  
よろしくお願いします。


CC BY-SA 3.0
2016-07-18T12:24:47.873
27708
2018-11-30T14:30:54.247
2016-07-18T14:33:28.450
13199
17199
question
ruby
rubyのarrayのeachで代入する方法を教えて下さい


例：

[code]

    ary.each do |elm| 
        elm[0] /= 5
    end 
    
[/code]


CC BY-SA 3.0
2016-07-18T12:40:27.097
27709
2016-07-18T12:40:27.097
5044
27708
answer


BLUEPIXYさんご自身のコメントにもありますが、 `map!` が自然じゃないかと思います。

[code]

    ary.map! {|a| [ a[0]/5, *a.drop(1) ] }
    
[/code]


CC BY-SA 3.0
2016-08-09T01:22:42.920
28136
2016-08-09T01:22:42.920
17037
27708
answer


今更ではありますが、、、。  
Eachでは値を持って来るだけなので、each_index で配列にアクセスしなおす。ということになると思います。  
僕もはまりました、、、、。

[code]

    ary.each_index {|idx|
      ary[idx][0] = ary[idx][0]/5
    }
    
[/code]


CC BY-SA 4.0
2018-11-30T14:04:44.067
50791
2018-11-30T14:30:54.247
2018-11-30T14:30:54.247
19110
31224
27708
answer