解决方法
NilClass定义了#to_i,因为它定义了一个返回[]的#to_a.它给你一些正确的类型,但是一种空白的价值.
这实际上是非常有用的.例如:
<%= big.long.expr.nil? ? "" : big.long.expr %>
变为:
<%= big.long.expr %>
更好! (Erb正在调用#to_s,为nil,为“”.)和:
if how.now.brown.cow && how.now.brown.cow[0] how.now.brown.cow[0] else 0 end
变为:
how.now.brown.cow.to_a[0].to_i
当只需要一个表示时,存在短的转换.长时间的转换是Ruby核心方法调用的转换,它们需要非常接近的东西.如果你想要一个类型检查,请使用它们.
那是:
thing.to_int # only works when almost Integer already. NilClass throws NoMethodError thing.to_i # this works for anything that cares to define a conversion