2016-08-19 36 views
-4

我只是尽力完成这个测验,但我不明白是什么做的是,在“使罗马”方法“AMT”:这个罗马数字练习中“amt”的含义是什么?

ROMAN_NUMS = { 
    "M" => 1000, 
    "CM" => 900, "D" => 500, "CD" => 400, "C" => 100, 
    "XC" => 90, "L" => 50, "XL" => 40, "X" => 10, 
    "IX" => 9, "V" => 5, "IV" => 4, "I" => 1 
} 

def romanize(num) 
    ROMAN_NUMS.map do |ltr, val| 
    amt, num = num.divmod(val) 
    ltr * amt 
    end.join 
end 
+0

[divmod](http://ruby-doc.org/core-1.9.3/Numeric.html#method-i-divmod) – zarak

+3

如果有疑问,搜索方法名称,如“Ruby divmod”,并开明。 – tadman

+0

http://ruby-doc.org/core-1.9.3/Numeric.html#method-i-divmod – HolyMoly

回答

1

divmod返回2个元素的数组,由该商数和的模量。

因此,基本上x.divmod(y)将返回[x/y, x % y](请参阅文档以获得更准确的说明)。

线

amt, num = num.divmod(val) 

需要两个元件阵列和做了脱结构分配到两个变量。之后amt(这只是一个名字很差的变量,应该被称为amount)将包含返回数组的第一个值,第二个包含num

+0

你也可以把它写成两行:'amt = num/val'和'num = num%val' – Stefan

+0

这是一个更加图形和明确的方式来看到“divmod”,谢谢我真的需要它。你人真好!! – ELECON88