在 Ruby 中,使用“?”有什么区别?里面if条件?
if object.property
或者
if object.property?
我在一种方法中找到了它们的用法,但不了解它们的区别
非常感谢
在 Ruby 中,使用“?”有什么区别?里面if条件?
if object.property
或者
if object.property?
我在一种方法中找到了它们的用法,但不了解它们的区别
非常感谢
?
可以是函数名的一部分。如果它出现在方法名称的末尾,则它不是特殊运算符。也!
可以是方法名称的一部分。所以那条线正在做的是同时调用object.property
和object.property?
方法。
在 Ruby 中,foo.bar
是消息发送的语法。它将首先评估表达式foo
(取消引用局部变量或发送到隐式接收器的无接收器消息self
),然后将消息发送bar
到结果对象。
一旦你知道 Ruby 中发送的消息是什么样子的,就很容易看出它做了什么object.property?
:它将首先评估表达式object
(取消引用局部变量或发送到隐式接收器的无接收消息self
),然后将消息发送property?
到结果对象。
那么,两者有什么区别呢?好吧,第一个发送消息property
,第二个发送消息property?
。这与第一个object.foo
和第二个没有什么不同object.bar
。
以 结尾的方法名称?
通常用于谓词方法,即用于询问“是/否”问题的方法。一个很好的例子是Numeric#zero?
。