Я пытаюсь получить очень удобный со всеми методами массива и перечислениями в Ruby, но я не понимаю, почему некоторые из них не мутируют, а другие делают. Например, есть разница между:Путаница мутации в Ruby Array?
def double(array)
array.map {|x| x * 2}
end
и
def double(array)
return array.map! {|x| x * 2}
end
Кроме того, когда я попытался позвонить
b.select{|x| x.even?}
где Ь представляет собой массив целых чисел, она не изменилась , но
b = b.select{|x| x.even?} OR
.delete_if
действительно казалось мутировать его.
Является
a.each do |word|
word.capitalize!
end
же, как
a.map do |word|
word.capitalize
end
Typo: 'capitalze!' должен «капитализировать!». Кроме того, пример хорош, но выбор можно сделать еще более кратким: b.выберите (&: even?) –
более лаконичный, да, но менее ясный; OP был смущен о характере разницы между двумя вызовами, называемыми подобными именами, бросая новую концепцию, подобную методу, прорабатывающему их, не собирается ничего делать, кроме как смущать их дальше. Спасибо за опечатку! – Hamms