小写和小写的区别! 在红宝石中

发布于 2024-07-16 10:00:23 字数 80 浏览 3 评论 0原文

我刚刚学习 Ruby,不太明白几种带和不带 '!' 的 Ruby 方法之间的区别 在最后。 有什么不同? 我为什么要使用其中一种而不是另一种?

I am just learning Ruby and I don't quite understand the difference between several Ruby methods with and without a '!' at the end. What's the difference? Why would I use one over the other?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情痴 2024-07-23 10:00:23

末尾带有感叹号的方法通常称为 bang 方法。 bang 方法不一定会修改其接收者,并且不能保证没有感叹号的方法不会修改。

这篇博客文章。 引用该帖子:

这个! 在以 ! 结尾的方法名称中
意思是“这种方法很危险”——或者,
更准确地说,这个方法是
否则的“危险”版本
等效方法,具有相同的名称
减去 !. “危险”是相对的; 这
! 没有任何意义除非
它所在的方法名称对应
类似但无爆炸性的方法名称。

这个! 并不意味着“这个方法
改变它的接收器。” 很多
“危险”的方法确实改变了他们的
接收器。 但有些人则不然。 我重复: !
并不意味着方法改变
它的接收器。

Methods with an exclamation mark at the end are often called bang-methods. A bang method doesn't necessarily modify its receiver as well as there is no guarantee that methods without a exclamation mark doesn't.

It's all very well explained in this blog post. To quote the post:

The ! in method names that end with !
means, “This method is dangerous”—or,
more precisely, this method is the
“dangerous” version of an otherwise
equivalent method, with the same name
minus the !. “Danger” is relative; the
! doesn’t mean anything at all unless
the method name it’s in corresponds to
a similar but bang-less method name.

and

The ! does not mean “This method
changes its receiver.” A lot of
“dangerous” methods do change their
receivers. But some don’t. I repeat: !
does not mean that the method changes
its receiver.

转身以后 2024-07-23 10:00:23

非 bang downcase() 方法只是返回一个表示小写字符串的新对象。

bang 版本会修改字符串本身。

my_text = "MY TEXT"
my_new_text = my_text.downcase
puts my_new_text # will print out "my text"
puts my_text     # will print out "MY TEXT" - the non-bang method doesn't touch it

my_text.downcase!

puts my_text # will print out "my text". The bang version has modified the object you're calling the method on

The non-bang downcase() method simply returns a new object representing you string downcased.

The bang version modifies your string itself.

my_text = "MY TEXT"
my_new_text = my_text.downcase
puts my_new_text # will print out "my text"
puts my_text     # will print out "MY TEXT" - the non-bang method doesn't touch it

my_text.downcase!

puts my_text # will print out "my text". The bang version has modified the object you're calling the method on
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文