似乎nil可以强制浮动?

时间:2014-07-15 16:32:52

标签: ruby-on-rails ruby

在我的应用程序中,我看到以下异常: TypeError:nil无法强制转换为Float

我正在迭代哈希并运行以下内容:

v[:score] = (1 / v[:distance].to_f) * v[:weight]

但是,当我尝试在rails控制台上调试时,我没有异常。事实上,如果我跑:

nil.to_f

我得到0.所以在控制台上运行我的线路产生无穷大,因为我除以零。

所以我的问题是,似乎nil可以被强制转换为浮点数,为什么我的应用程序中出现异常呢?

谢谢!

1 个答案:

答案 0 :(得分:4)

可能会发生错误:

arup@linux-wzza:~> pry
[1] pry(main)> (1/2.0) * nil
TypeError: nil can't be coerced into Float
from (pry):1:in `*'
[2] pry(main)>

在您的应用中,我确信v[:weight]正在提供nil。问题不是来自v[:distance],因为您处理了v[:distance].to_f。检查两次,我该死的v[:weight]在任何情况下都是nil