小编典典

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

all

在 Ruby中,一些方法有?一个问号(include?

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

这是什么意思?


阅读 133

收藏
2022-03-06

共1个答案

小编典典

通常,以 结尾!的方法表示该方法将 修改它所调用的对象 。Ruby 将这些称为“ 危险方法
”,因为它们会更改其他人可能引用的状态。下面是一个简单的字符串示例:

foo = "A STRING"  # a string called foo
foo.downcase!     # modifies foo itself
puts foo          # prints modified foo

这将输出:

a string

在标准库中,您会在很多地方看到成对的名称相似的方法,一个有 the !,一个没有。没有的称为“安全方法”,它们返回原始副本的副本,并将更改应用于
副本 ,而被调用者保持不变。这是没有 的相同示例!

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 类都遵循它。它还可以帮助您跟踪代码中的修改内容。

2022-03-06