[Ruby] Глюк или фича?

Yuri Leikind y.leikind at sam-solutions.net
Mon Sep 15 20:02:13 MSD 2003


On Mon, 15 Sep 2003 19:37:35 +0400
SoNaR <sonar at scli.ru> wrote:

> Hello Yuri,
> 
> Monday, September 15, 2003, 7:29:12 PM, you wrote:
> 
> YL> On Mon, 15 Sep 2003 18:50:49 +0400
> YL> SoNaR <sonar at scli.ru> wrote:
> 
> >> Hello Ruby,
> >> 
> >>   @ar = [[1,2,3],[4,5,6],[7,8,9]]
> >>   def test( ar = @ar )
> >>       i, j = 2, 1
> >>       ar[ i ][ j ], ar[ i ][ j+1 ] = ar[ i ][ j+1 ], ar[ i ][ j ]
> >>       return ar
> >>   end
> >>   p test
> >>   p @ar
> >> 
> >>   Почему поменялось значение массива и как этого избежать?
> YL> А почему оно не должно меняться, я не понимаю?
>     Ну так по логике вещей я передаю массив в метод и он должен
>     поменять значения в копии и вернуть модифицированную копию. Или я
>     что-то не понимаю?

Не понимаешь.

Есть только один объект, и присваивание не генерирует новую копию
объекта, лишь новая ссылка создается на этот объект.

Обычное поведение для ОО языков.


-- 
Best regards,
Yuri Leikind




More information about the Ruby mailing list