如果声明没有捕捉到零

时间:2011-12-05 20:21:53

标签: ruby-on-rails ruby

我有以下功能:

def price
  if super == nil
    return 'super'
  end
  super
end

nil正在退回。这怎么可能?如果if语句等于nil并且然后返回'super'

,那么if语句是否应该超级

2 个答案:

答案 0 :(得分:2)

如果super每次都可以返回不同的值,则可以(如果不太可能)。也许尝试以下?它只调用super一次,所以它没有陷阱。

def price
  super || 'super'
end

答案 1 :(得分:1)

这是一种非常奇怪的说法,应该更简单地表达为:

def price
  super || 'super'
end

可能是由于某种原因,对同一方法的第二次调用返回nil。您没有捕获初始结果,因此很难说为什么这不起作用。