2

在 Ruby 中,使用“?”有什么区别?里面if条件?

if object.property

或者

if object.property?

我在一种方法中找到了它们的用法,但不了解它们的区别

非常感谢

4

2 回答 2

5

?可以是函数名的一部分。如果它出现在方法名称的末尾,则它不是特殊运算符。也!可以是方法名称的一部分。所以那条线正在做的是同时调用object.propertyobject.property?方法。

Ruby 中方法名称的限制是什么?

于 2020-01-09T23:02:58.113 回答
-1

在 Ruby 中,foo.bar消息发送的语法。它将首先评估表达式foo(取消引用局部变量或发送到隐式接收器的无接收器消息self),然后将消息发送bar到结果对象。

一旦你知道 Ruby 中发送的消息是什么样子的,就很容易看出它做了什么object.property?:它将首先评估表达式object(取消引用局部变量或发送到隐式接收器的无接收消息self),然后将消息发送property?到结果对象。

那么,两者有什么区别呢?好吧,第一个发送消息property,第二个发送消息property?。这与第一个object.foo和第二个没有什么不同object.bar

以 结尾的方法名称?通常用于谓词方法,即用于询问“是/否”问题的方法。一个很好的例子是Numeric#zero?

于 2020-01-10T01:11:36.223 回答