Почему деструктивные методы могут быть опасны?
чт, 02/08/2007 - 20:11 — spine
Помните, что присваивание в большинстве случаев только копирует ссылки на объекты, и что передача параметров эквивалента присваиванию. Это значит, что в конце концов на один и тот же объект указывают несколько переменных. Если одна из этих переменных используется для вызова деструктивного метода, объект, на который ссылаются все переменные, будет изменен.
def foo(str)
str.sub!(/foo/, "baz")
end
obj = "foo"
foo(obj)
puts obj #=> baz
В данном примере меняется сам аргумент.
