2016-08-19 7 views
-4

я просто пытаюсь завершить этот тест, но я не могу понять, что делает это «АМТ» в «романизировать» метод:В чем смысл «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

Смежные вопросы