誤差(undefined method '%' for false:FalseClass
)正在引用這條線未定義的方法'%」爲假:FalseClass
rect = Rect.new(icon_index % 16 * 24, icon_index/16 * 24, 24, 24)
爲什麼產生這個錯誤?它是編輯程序中某些默認代碼的一部分,直到最近我才遇到這個問題。
誤差(undefined method '%' for false:FalseClass
)正在引用這條線未定義的方法'%」爲假: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
,它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
很好解釋。 – Gerry
什麼是'icon_index'這個呃ror告訴你,你想在布爾對象上使用'#%'方法,爲了讓你的問題更清楚,請添加icon_index等於(簡單示例),或者你在哪裏得到它? –