2016-08-19 35 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