什么是||方法之间的意思?

时间:2016-08-26 09:02:09

标签: ruby-on-rails ruby

def respond_to?(method, include_private = false)
  super || @subject.respond_to?(method, include_private)
end

||是一个or运算符,那么方法之间的||意味着什么?

除非super返回nil,否则它始终会调用super,然后评估@subject.respond_to,因为||运算符会短路?

编辑:我认为我的问题不重复,因为我知道'||'是怎样的运算符来自其他编程语言。我知道什么是短路。我只是从来没有看到它只使用两种方法而没有if语句涉及。

1 个答案:

答案 0 :(得分:4)

||运算符的含义相同,无论表达式的每一侧有多复杂。

A || B表示:

  • 评估A
  • 如果A == falseA == nil
    • 评估B
    • 返回B的值作为A || B表达式
    • 的值
  • 否则返回A的值作为A || B表达式
  • 的值