在我的应用程序中,我看到以下异常: TypeError:nil无法强制转换为Float
我正在迭代哈希并运行以下内容:
v[:score] = (1 / v[:distance].to_f) * v[:weight]
但是,当我尝试在rails控制台上调试时,我没有异常。事实上,如果我跑:
nil.to_f
我得到0.所以在控制台上运行我的线路产生无穷大,因为我除以零。
所以我的问题是,似乎nil可以被强制转换为浮点数,为什么我的应用程序中出现异常呢?
谢谢!
答案 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
。