在Ruby中使用问号运算符的目的是什么?
有时它是这样的:
assert !product.valid?
有时它在if结构中。
在Ruby中使用问号运算符的目的是什么?
有时它是这样的:
assert !product.valid?
有时它在if结构中。
当前回答
在你的例子中,它只是方法名的一部分。在Ruby中,你还可以在方法名中使用感叹号!
Ruby中问号的另一个例子是三元运算符。
customerName == "Fred" ? "Hello Fred" : "Who are you?"
其他回答
我相信这只是布尔值的一种惯例。有点像说“IsValid”。
值得指出的是,只允许在方法名中使用?,变量名中不允许使用?。在学习Ruby的过程中,我假设?指定一个布尔返回类型,所以我尝试将它们添加到标志变量,导致错误。这导致我错误地认为有一些特殊的语法涉及?
相关:为什么变量名不能以'结尾?而方法名可以?
Ruby中有一个约定,返回布尔值的方法以问号结尾。没有比这更重要的了。
它也用于正则表达式中,意思是“最多重复前一个字符一次”
例如正则表达式/hey?/匹配字符串"he"和"hey"。
在你的例子中,它只是方法名的一部分。在Ruby中,你还可以在方法名中使用感叹号!
Ruby中问号的另一个例子是三元运算符。
customerName == "Fred" ? "Hello Fred" : "Who are you?"