当我编写以下代码时,我期望最后几行给出 afalse和 0 结果。你能帮我理解为什么会发生这种情况吗?
id=408983265
a = id.to_s.each_char.map(&:to_i)
valid_digit = a.reverse
.drop(1)
.map!.with_index { |x, i| x << (i + 1) }
.sum % 11 % 10
puts "valid digit: #{valid_digit}" # valid digit: 5
puts "last digit: #{a.pop}" # last digit: 5
# the problem starts here
puts valid_digit != a.pop # true ??? It should be 5!=5 -> false
puts valid_digit - a.pop # 3 ??? It should be zero!
Run Code Online (Sandbox Code Playgroud) ruby ×1