Что означает "amt" в этом упражнении с римскими цифрами?
Я просто пытаюсь завершить этот тест, но я не могу понять, что делает этот "amt" в методе "romanize":
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
1 ответ
divmod
возвращает массив из 2 элементов, состоящий из отношения и модуля.
Так в основном x.divmod(y)
вернусь [x / y, x % y]
(посмотрите на документы для более точного описания).
Линия
amt, num = num.divmod(val)
принимает этот массив из двух элементов и выполняет деструктуризацию присваивания двум переменным. потом amt
(это просто плохо названная переменная, которая должна быть вызвана amount
) будет содержать первое значение возвращаемого массива и num
второй.