ruby - 为什么在 Ruby 方法中使用感叹号?

标签 ruby methods naming-conventions immutability

在 Ruby 中,一些方法有一个问号 (?),它会询问类似 include? 的问题,询问是否包含有问题的对象,然后返回 true/假。

但为什么有些方法有感叹号 (!) 而其他方法没有?

这是什么意思?

最佳答案

一般来说,以 ! 结尾的方法表示该方法将修改调用它的对象。 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 类都遵循它。它还可以帮助您跟踪代码中的修改内容。

关于ruby - 为什么在 Ruby 方法中使用感叹号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/612189/

相关文章:

Ruby - Rails - Savon 结构 SOAP XML 主体

java 使用带有数组的方法

java - 如何从方法返回接口(interface)

java - 带有数组参数的 boolean 方法

ruby - ZeroMQ 安全地通过互联网

ruby-on-rails - 使用 Rspec 进行 Controller 测试中的 Rails 协会问题

objective-c - Objective C 初始值设定项的命名约定?

.net - Resharper 中用于支持字段的自定义命名样式选项

java - 确定在 Java 中将哪个动词用于方法名称

ruby - 安装 RVM : "Requirements installation failed with status: 1."