undefined方法`%’表示false:FalseClass
错误( undefined method '%' for false:FalseClass
)引用此行
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
为什么会产生这个错误? 它是编辑程序中某些默认代码的一部分,直到最近我才遇到这个问题。
例如,如果你将a
初始化为nil
然后你想使用这个值执行一个操作,你会看到一个undefined method '%' for nil:NilClass
错误,为了避免这种情况你可以检查之前是否值是nil
以便以正常方式执行此类操作,可能如下:
puts (a % 1) if !a.nil?
这不会向你显示任何内容,因为a
nil
,它会对你的if
语句作出回应。
初始化为false
的值也会发生同样的情况,如果在这种情况下a
为false
,则无法使用此对象执行%
操作,因为%
将等待左边的integer
数值:
a = false puts (a % 1) # => undefined method `%' for false:FalseClass (NoMethodError)
像以前一样,一个可能的解决方案是检查值是否为false
:
puts (a % 1) if a != false
你也可以使用if a
,这可能意味着如果值不是nil
和/或不是false
:
puts a % 1 if a
或者直接validation值是否为integer
并且是Fixnum
或Numeric
类:
a = 1 puts a % 1 if a.class == Fixnum # => 0 puts a % 1 if a.is_a? Fixnum # => 0 puts a % 1 if a.is_a? Numeric # => 0
在你的情况下,你可以这样做:
if icon_index rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24) end