Я не понимаю, что происходит в строке
print buggy_logger << "\n" # <- This insertion is the bug.
Почему переменная статус изменяется при выводе указанной выше строки? Я выполняю этот веб-сайт http://www.reactive.io/tips/2009/01/11/the-difference-between-ruby-symbols-and-strings/Неизменяемый vs mutable
status = "peace"
buggy_logger = status
print "Status: "
print buggy_logger << "\n" # <- This insertion is the bug.
def launch_nukes?(status)
unless status == 'peace'
return true
else
return false
end
end
print "Nukes Launched: #{launch_nukes?(status)}\n"
ВЫХОД ЕСТЬ:
Потому что вы добавляете строку строки в строку? –
['String # <<'] (http://ruby-doc.org/core-2.2.0/String.html#method-i-3C-3C) (aka concat) * мутирует * исходный объект строки (который был создан «миром»). Я рекомендую * not * использовать мутации для строк, но вместо этого используйте '+' вместо '<<' здесь. – user2864740
Thanks user2864740. Я понял. – user3040171