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

Содержимое удалено Содержимое добавлено
Строка 480:
Кто результат не сохраняет.
 
Для того, чтобы сохранить результат выполнения метода в исходную переменную, можно такженужно добавить к названию метода восклицательный знак.
 
<source lang="ruby">array = [1, 2, 3, 4, 5]
Строка 486:
array #=> [1, 4, 9, 16, 25]</source>
 
Такой приём работает и с многими другими методами в языке, которые только возвращают результат своего выполнения. Однако при использовании цепочек методов каждый должен быть с восклицательным знаком, иначе разорвётся цепочка копирований.
 
<source lang="ruby">
array = [1, 2, 3, 4, 5, nil]
array.compact.map!{ |elem| elem**2 } #=> [1, 4, 9, 16, 25]
array #=> [1, 2, 3, 4, 5, nil]
array.compact!.map!{ |elem| elem**2 } #=> [1, 4, 9, 16, 25]
array #=> [1, 4, 9, 16, 25]</source>
 
В первом случае операция .compact создала копию массива, тогда как .compact! заменила первоначальные значения результатами, полученными от .map!
 
==== Отбор элементов по признаку ====