在 Ruby中,一些方法有?一个问号(include?
?
include?
但是为什么有些方法有感叹号(!)而其他方法没有呢?
!
这是什么意思?
通常,以 结尾!的方法表示该方法将 修改它所调用的对象 。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 类都遵循它。它还可以帮助您跟踪代码中的修改内容。