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

在Ruby中,一些方法有一个问号(),它会询问像包含?这样的问题,询问所涉及的对象是否包含在内,然后返回真/假

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

这是什么意思

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

foo=“A STRING”#一个名为foo的字符串
foo.downcase!#修改foo本身
放置foo#打印修改后的foo

这将输出:

字符串

在标准库中,有许多地方您会看到成对的类似命名的方法,其中一个带有和一个没有。不带的方法称为“安全方法”,它们返回原始方法的副本,并将更改应用于副本,被调用方保持不变。下面是没有的相同示例:

foo=“A STRING”#一个名为foo的字符串
bar=foo.downcase不修改foo;返回修改后的字符串
放置foo#打印未更改的foo
放置栏#打印新创建的栏

这将产生:

字符串
一串

请记住,这只是一个约定,但是很多Ruby类都遵循它。它还帮助您跟踪代码中修改的内容

发表评论