RubyHammer: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 153:
another_variable
Wrong_variable # неправильное имя. Начинается с прописной
3JIemeHT42answer # неправильное имя. Начинается с цифры
____ # а вот как можно
# немного странное, но корректное имя переменной</source>
Строка 160:
 
[[w:Присваивание (программирование)|Присвоение]] делается знаком равенства (<code>=</code>), вот так:
<source lang="ruby">maccuB
array = [1,2,3,4]
nepemeHHa9sum = maccuBarray + [1,2]
gpyra9_nepemeHHa9sub = nepemeHHa9sum - maccuBarray</source>
 
То, что справа от <code>=</code>, прежде чем стать значением переменной, обычно полностью вычисляется. НашаПеременная <code>nepemeHHa9sum</code> будет содержать массив <code>[1, 2, 3, 4, 1, 2]</code>, ибо именно таков результат действия <code>maccuBarray + [1, 2]</code>. Плюс (<code>+</code>) с массивами поступает именно так: прицепляет второй массив в хвост первого.
 
==== Переменные '''указывают''' на объект ====
Фокус-покус:
<source lang="ruby">nogpyragirl = "Даша"
our_guest = girl
k_HAM_B_rocTu_ugeT = nogpyra
puts nogpyragirl #-> "Даша", разумеется
k_HAM_B_rocTu_ugeTour_guest[0] = "М" # меняем первую (номер ноль) букву у переменной-строки
puts nogpyragirl #-> "Маша"
# На первый взгляд, странно и неожиданно</source>
 
Строка 179 ⟶ 180 :
Сами данные (''объект'') лежат где-то в другом месте. В виду этого естественно, что напрямую изменяя сам объект, указуемый переменной, все другие переменные, указывающие на этот объект, будут возвращать то изменённое значение (также будут изменяться).
 
Чтобы <code>nogpyragirl</code> наша осталась <code>"Даша"</code>, надо в переменную занести её [[w:клонирование|клон]]:
<source lang="ruby">nogpyragirl = "Даша"
k_HAM_B_rocTu_ugeTour_guest = nogpyragirl.clone
k_HAM_B_rocTu_ugeTour_guest[0] = "М"
# Но изменили мы лишь клон. Дома в сохранности сидит настоящая:
puts nogpyragirl #-> "Даша"</source>
 
{{info|Можно создавать копии объектов ещё методом <code>.dup</code>. Разницу между ними Вы потом поймёте}}
Строка 190 ⟶ 191 :
Для безвредного присвоения новых значений переменным их редко приходится клонировать, ибо большинство методов делают это и так. Даже если просто присвоите переменной новое значение, Руби создаст объект с новым значением и поместит в (уже существующую) переменную ссылку на тот объект:
<source lang="ruby">#...
k_HAM_B_rocTu_ugeTour_guest = "Аристарх"; # Создаётся новый объект, переменная переводится на него
p nogpyragirl #-> "Даша"</source>
 
== Типы данных ==