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的值也会发生同样的情况,如果在这种情况下afalse ,则无法使用此对象执行%操作,因为%将等待左边的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并且是FixnumNumeric类:

 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