什么“?”在红宝石意味着什么?

时间:2009-10-05 08:49:59

标签: ruby

我想知道它的真正含义以及如何正确使用它。

另一个问题是关于我看到的断言

assert product.valid? product.errors.full_messages

assert product.valid?

但是我找不到那些断言的语法断言(product.errors.full_messages)的第二个arg是什么意思,或者它是arg for?

由于

3 个答案:

答案 0 :(得分:11)

Ruby使用特定的方法命名约定。它允许您快速识别他们可能具有的副作用,或返回类型..

这些约定在方法名称的末尾使用特殊标记,例如“”和“”。这种情况并不常见,因为大多数编程语言都倾向于在标识符中禁止使用这些字符,但尽管如此,它确实是方法名称的一部分。 (不应与运营商混淆)

  • 修复后“”表示该方法返回一个布尔值。这是替换“is”前缀的便捷方式。 (这种惯例也倾向于存在于lisp方言中)
  • 修复后“”表示该方法将修改实例,因此不会对/返回副本。

请注意,这些只是约定。绝不会必须关注它,但 被认为是一种很好的做法。

答案 1 :(得分:3)

这纯粹是一种惯例,没有正式的含义。人们对此感到困惑并不罕见,因为许多(大多数?)语言不允许这样的字符?而且!在标识符中。

答案 2 :(得分:1)

将它放在一个返回布尔值afaik的方法上就是惯例。而不是制造每一个IsSomething。