Rails显示错误的计算

时间:2014-12-18 18:14:20

标签: ruby ruby-on-rails-4 pry-rails

[8] pry(#<Plan>)> self[:total_outstanding]||0 / self.dd_amount 
=> 10100.0
[9] pry(#<Plan>)> self[:total_outstanding]||0
=> 10100.0
[10] pry(#<Plan>)> self.dd_amount
=> 900.0
[11] pry(#<Plan>)> self[:total_outstanding].to_i||0/self.dd_amount.to_i
=> 10100

self [:total_outstanding] .to_i || 0 / self.dd_amount.to_i应该重新引用11而不是10100这个第一个属性的值

我正在尝试在pry会话中调试它

当代码运行时,它确实将值视为10100,这是错误的。

1 个答案:

答案 0 :(得分:4)

OR运算符(||)的优先级低于除法运算符(/)。

Ruby正在解释你的最后一行:

self[:total_outstanding].to_i || (0/self.dd_amount.to_i)

这只会返回self[:total_outstanding].to_i,因为它是一个真正的价值。

self[:total_outstanding].to_i||0组合在一起:

(self[:total_outstanding].to_i||0) / self.dd_amount.to_i