📜  !在 ruby 中(1)

📅  最后修改于: 2023-12-03 14:58:57.457000             🧑  作者: Mango

Ruby 中的 '!':一种强有力的方法调用

在 Ruby 中,'!' 不是一个特殊字符,但它常常被用到表示一种强有力的方法调用。以下是关于 Ruby 中的 '!' 的介绍。

基本概念

在 Ruby 中,大部分带有 '!' 的方法的作用是对原始对象进行直接修改而不是创建一个新的对象。

比如:

  • upcase! 将字符串全部转换成大写,且会直接作用于原始字符串内,而不是返回一个新的字符串。

  • reverse! 将字符串反转,且会直接作用于原始字符串内,而不是返回一个新的字符串。

  • sort! 对一个数组进行原地排序,返回原始数组而不是新数组。

  • map! 对一个数组进行原地修改,返回原始数组而不是新数组。

用法示例

以下是 '!' 在 Ruby 中的几个用法示例:

  1. 删除末尾的空格:
string = " hello "
string.chomp! #=> " hello"
  1. 判断两个字符串是否相等:
string_a = "hello"
string_b = "world"
string_a.eql?(string_b) #=> false
  1. 反转字符串:
string = "hello"
string.reverse! #=> "olleh"
  1. 去掉数组中的重复元素:
numbers = [1, 2, 3, 2, 1]
numbers.uniq! #=> [1, 2, 3]
  1. 使用正则表达式删除字符串中的数字:
string = "12345hello67890"
string.gsub!(/\d+/, '') #=> "hello"
注意事项
  • '!' 通常被用于对原始对象进行修改,因此可能会导致原始数据的丢失。

  • 如果方法名后面有 '!'(例如 sort!),则该方法通常会将原始对象进行修改,并返回原始对象,而不是返回一个新的对象。这和没有 '!' 的方法相比,是一种原地修改的行为。

  • 是否使用 '!' 取决于你的应用程序实际需要哪种行为。如果需要在不修改原始对象的情况下创建一个新的对象,那么请使用没有 '!' 的方法。

结论

'!' 表示强有力的方法调用,通常用于对原始对象进行原地修改而不是创建新的对象。对于开发者来说,了解 '!' 的用法,可以让代码更加高效,减少代码冗余。