在Ruby中使用问号运算符的目的是什么?
有时它是这样的:
assert !product.valid?
有时它在if结构中。
在Ruby中使用问号运算符的目的是什么?
有时它是这样的:
assert !product.valid?
有时它在if结构中。
当前回答
这是一种代码风格的约定;它指示一个方法返回一个布尔值(真或假)或一个对象来指示一个真值(或“真”值)。
问号是方法名末尾的有效字符。
https://docs.ruby-lang.org/en/2.0.0/syntax/methods_rdoc.html#label-Method+Names
其他回答
在你的例子中,它只是方法名的一部分。在Ruby中,你还可以在方法名中使用感叹号!
Ruby中问号的另一个例子是三元运算符。
customerName == "Fred" ? "Hello Fred" : "Who are you?"
这是一种代码风格的约定;它指示一个方法返回一个布尔值(真或假)或一个对象来指示一个真值(或“真”值)。
问号是方法名末尾的有效字符。
https://docs.ruby-lang.org/en/2.0.0/syntax/methods_rdoc.html#label-Method+Names
我相信这只是布尔值的一种惯例。有点像说“IsValid”。
它也用于正则表达式中,意思是“最多重复前一个字符一次”
例如正则表达式/hey?/匹配字符串"he"和"hey"。
使用来自Kernel#test的测试方法的第一个参数也是一种常见的约定
test ?d, "/dev" # directory exists?
# => true
test ?-, "/etc/hosts", "/etc/hosts" # are the files identical
# => true
从这个问题中可以看出