Nix 将可变参数从函数添加到集合

Nix add variadic args to a set from a function

在 nix 中可以实现这样的功能吗?

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

其中调用 f 一组参数 returns 一组:

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"; }

说清楚。省略号集 ... 可变参数类型 并不意味着日常语言中使用的等等。这里的解决方案是如果可能的话在省略号上调用 get { ... }。但是我不知道语言是否支持这个。

这应该有效:

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

您可以在此处阅读更多相关信息:

https://nixos.org/nix/manual/#ss-functions