Ruby 一段代码的疑问,涉及迭代和 divmod 方法

runup · 2015年12月05日 · 最后由 runup 回复于 2015年12月05日 · 1389 次阅读

问题:FACTORS=[["x",5],["z",3]],执行结果为 xz,但是 FACTORS=[[“c”,9],["x",5],["z",3]] 执行结果为 c,我预计的结果应该是 cxz,求问原因。 代码如下:

class Roman
  def initialize(value)
  @value = value
end

FACTORS=[["x",5],["z",3]]  #返回xz
#FACTORS=[[“c”,9],["x",5],["z",3]  #返回c

  def to_s
    value = @value
    roman = ""
    for code, factor in FACTORS
    count, value = value.divmod(factor)
      if !count.zero?
        roman << code
      end
    end
    roman
  end
end

a = Roman.new(9).to_s
puts a 

在经过["c", 9]之后,value已经是 0 了。0 除以任何数结果都为 0,c才是正确答案吧,为什么会是cxz

#1 楼 @spacewander 恩,谢谢,是这个原因。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号