Вопрос проверяет понимание конвенций именования методов в Ruby и их влияния на поведение программы.
Методы с ? в конце обычно возвращают логическое значение (true или false) и используются для проверки условий. Методы с ! означают, что они изменяют объект на месте или имеют потенциально "опасное" поведение по сравнению с их безопасной версией.
В Ruby использование ? и ! в названии методов — это соглашение, но не обязательное требование.
- ? в методах:
Методы с ? возвращают логическое значение и используются для проверки условий. Примеры:
"hello".empty? # => false
[1, 2, 3].include?(2) # => true Такие методы позволяют писать код, который легко читать и понимать.
- ! в методах:
Методы с ! обычно модифицируют объект на месте или имеют более опасное поведение. Например:
str = "hello"
str.upcase! # Модифицирует сам объект str
puts str # => "HELLO" Методы с ! часто имеют безопасную версию, которая возвращает модифицированное значение, но не изменяет оригинальный объект:
str = "hello"
new_str = str.upcase # Создаёт новую строку
puts str # => "hello"
puts new_str # => "HELLO"
Методы с ? помогают проверять условия, а методы с ! используются, когда требуется явно указать на изменения объекта.