Ruby/Переменные: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 30:
Фокус-покус:
 
<source lang="ruby">girlfriend = "ДашаТатьяна"
goes_on_a_visit = girlfriend
puts girlfriend #=> ДашаТатьяна
goes_on_a_visit[0] = "МБ" # меняем первую (номер ноль) букву у переменной-строки
puts girlfriend #=> МашаБатьяна
# На первый взгляд странно и неожиданно</source>
 
Строка 41:
Сами данные (''объект'') лежат где-то в другом месте. Ввиду этого естественно, что при прямом изменении самого объекта, на который указывает переменная, все другие переменные, указывающие на этот объект, будут возвращать изменённое значение (также будут изменяться).
 
Чтобы <code>girlfriend</code> наша осталась <code>"ДашаТатьяна"</code>, надо в переменную занести её [[w:Клонирование (информатика)|клон]]:
 
<source lang="ruby">girlfriend = "ДашаТатьяна"
goes_on_a_visit = girlfriend.clone
goes_on_a_visit[0] = "М" # Но изменили мы лишь клон. Дома в сохранности сидит настоящая:
puts girlfriend #=> ДашаТатьяна</source>
 
Можно создавать копии объектов ещё методом <code>.dup</code>. Разница между ними будет понятна позже.
Строка 54:
<source lang="ruby"># …
goes_on_a_visit = "Аристарх" # Создаётся новый объект, переменная переводится на него
p girlfriend #=> "ДашаТатьяна"</source>
 
{{BookCat}}