Как правило, методы, заканчивающиеся на !
, указывают на то, что метод изменит объект, для которого он вызван. Ruby называет их «опасными методами», потому что они изменяют состояние, на которое может ссылаться кто-то другой. Вот простой пример для строк:
foo = "A STRING" # a string called foo
foo.downcase! # modifies foo itself
puts foo # prints modified foo
Это выведет:
a string
В стандартных библиотеках есть много мест, где вы увидите пары методов с одинаковыми названиями, один с !
, а другой без. Те, у которых нет, называются «безопасными методами», и они возвращают копию оригинала с изменениями, примененными к копии, без изменений вызываемого объекта. Вот тот же пример без !
:
foo = "A STRING" # a string called foo
bar = foo.downcase # doesn't modify foo; returns a modified string
puts foo # prints unchanged foo
puts bar # prints newly created bar
Это выводит:
A STRING
a string
Имейте в виду, что это всего лишь соглашение, но многие классы Ruby следуют ему. Это также помогает вам отслеживать, что изменяется в вашем коде.
person
Todd Gamblin
schedule
04.03.2009