Nix добавляет variadi c args в набор из функции - PullRequest
1 голос
/ 19 февраля 2020

Возможно ли что-то подобное в nix?

f = {x, y, ...}:
{
    x = x + 1;
    y = y + 2;
    ...;
}

, где вызов f для набора аргументов возвращает набор:

f { x = 1; y = 2; }                   -> { x = 2; y = 4; }
f { x = 1; y = 2; z = 5 }             -> { x = 2; y = 4; z = 5; }
f { x = 1; y = 2; z = 5; s = "str"; } -> { x = 2; y = 4; z = 5; s = "str"; }

Для ясности. Набор многоточия ... является variadi c тип аргумента и не означает, что и так далее используется в повседневном языке. Решение здесь состоит в том, чтобы вызвать get { ... } на многоточии, если это возможно. Но я не знаю, поддерживает ли язык это.

1 Ответ

3 голосов
/ 19 февраля 2020

Это должно работать:

f = args@{x, y, ...}: args // { x = x + 2; y = y + 2; }

Подробнее об этом можно прочитать здесь:

https://nixos.org/nix/manual/#ss -функции

...