在Ruby中使用问号运算符的目的是什么?

有时它是这样的:

assert !product.valid?

有时它在if结构中。


当前回答

它也用于正则表达式中,意思是“最多重复前一个字符一次”

例如正则表达式/hey?/匹配字符串"he"和"hey"。

其他回答

在你的例子中,它只是方法名的一部分。在Ruby中,你还可以在方法名中使用感叹号!

Ruby中问号的另一个例子是三元运算符。

customerName == "Fred" ? "Hello Fred" : "Who are you?"

在你的例子中

product.valid?

实际上是一个函数调用并调用一个名为valid的函数?。根据约定,某些类型的“test for condition”/布尔函数在函数名中有一个问号。

这是一种代码风格的约定;它指示一个方法返回一个布尔值(真或假)或一个对象来指示一个真值(或“真”值)。

问号是方法名末尾的有效字符。

https://docs.ruby-lang.org/en/2.0.0/syntax/methods_rdoc.html#label-Method+Names

Ruby中有一个约定,返回布尔值的方法以问号结尾。没有比这更重要的了。

它也用于正则表达式中,意思是“最多重复前一个字符一次”

例如正则表达式/hey?/匹配字符串"he"和"hey"。