В Ruby восклицательный знак (!) обычно называют «взрывом» и используется различными способами для изменения или обозначения потенциально деструктивного или мутирующего метода. Его часто используют как соглашение, чтобы различать две версии метода: одна версия выполняет операцию неразрушающим образом, а другая версия изменяет объект на месте.
Вот несколько распространенных случаев использования восклицательного знака в Ruby, а также примеры кода:
-
Соглашение об именах методов:
Ruby использует восклицательный знак в качестве соглашения об именах, чтобы указать, что метод потенциально опасен или имеет побочные эффекты. Он служит предупреждением программисту о том, что метод может изменить объект, для которого он вызывается.Пример:
def sort! # Modifies the array in place end array = [3, 1, 2] array.sort! # Sorts the array in place
-
Логическое отрицание.
Восклицательный знак можно использовать для отрицания истинности значения или выражения.Пример:
value = true negated_value = !value # false
-
Инвертирование метода.
Некоторые методы имеют соответствующую версию Bang, которая возвращает противоположный результат или изменяет объект на месте.Пример:
array = [1, 2, 3] inverted_array = array.reverse! # Modifies the array in place and returns [3, 2, 1]
-
Разрушающее присвоение.
Восклицательный знак можно использовать при параллельном присвоении, чтобы указать, что присвоение должно выполняться разрушительным образом, изменяя значения.Пример:
x, y = 1, 2 x, y = y, x # Swaps the values of x and y destructively
-
Метод с побочными эффектами.
Некоторые методы имеют версию Bang, которая выполняет ту же операцию, но с побочными эффектами, такими как вывод на печать или изменение глобального состояния.Пример:
def log!(message) puts "Log: #{message}" end log!("Hello, world!") # Prints "Log: Hello, world!"