这里发生了什么?
irb(main):001:0> a= nil
=> nil
irb(main):002:0> b = nil
=> nil
irb(main):003:0> a
=> nil
irb(main):004:0> a+b
NoMethodError: undefined method `+' for nil:NilClass
from (irb):4
from :0
irb(main):005:0> if a.nil? or b.nil?; a,b=0;end;
irb(main):006:0* c = a+b
TypeError: nil can't be coerced into Fixnum
from (irb):6:in `+'
from (irb):6
from :0
irb(main):007:0>
Run Code Online (Sandbox Code Playgroud)
如何通过将nil转换为数字来安全地执行算术?
根据为什么有nil而不是数字,你可以决定将nil视为0对你有好处; 在这种情况下,您可以执行以下操作:
c = (a || 0) + (b || 0)
Run Code Online (Sandbox Code Playgroud)
当然,这只有在你知道为什么你有一个零而不是一个数字时才有意义......
| 归档时间: |
|
| 查看次数: |
773 次 |
| 最近记录: |