错误(undefined method '%' for false:FalseClass
)引用此行
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
为什么会产生此错误?它是编辑程序中某些默认代码的一部分,直到最近我才遇到这个问题。
答案 0 :(得分:2)
例如,如果您将a
初始化为nil
,然后您想使用此值执行操作,则会发现undefined method '%' for nil:NilClass
错误,为避免这种情况,您可以检查之前,如果值为nil
,以便以正常方式执行此类操作,可能为:
puts (a % 1) if !a.nil?
这不会向您显示任何内容,因为当a
为nil
时,它会true
回复您的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
或者直接验证该值是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