Что означает "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 второй.

Другие вопросы по тегам