Divmod: частное и остаток деления в одной функции эликсира - PullRequest
0 голосов
/ 25 мая 2018

Во многих языках программирования есть комбинированная операция, которая возвращает как частное, так и остаток от деления в виде целых чисел.Во многих случаях это называется divmod, потому что оно служит одновременно целям деления и функции по модулю за один шаг.

Я предполагаю, что намерение иметь одну операцию состоит в том, что вычисление деления не 'необходимо выполнить дважды, и результаты не должны быть представлены в виде значений с плавающей запятой с потенциальными потерями.

Есть ли в Elixir такая комбинированная функция?Я могу найти только div и rem отдельно.

1 Ответ

0 голосов
/ 25 мая 2018

Библиотеки ядра языка не существует, но вы можете легко сконструировать ее самостоятельно:

divmod =
  fn e, d ->
    ~w|div rem|a
    |> Enum.map(&apply(Kernel, &1, [e, d]))
    |> List.to_tuple()
  end
#⇒ #Function<12.99386804/2 in :erl_eval.expr/5>
divmod.(5, 2)
#⇒ {2, 1}

Есть две возможные причины, по которым она не представлена ​​в стандартной библиотеке: а) идеология Elixirчтобы обеспечить эшафот, а не швейцарский каркас ножа и б) Erlang на самом деле не лучший выбор для математики.

...