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

问题描述 投票:1回答:1

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

要清楚。省略号...的集合是variadic arguments type,并不表示日常语言中使用的等值。解决方案是在可能的情况下在省略号上调用get { ... }。但我不知道该语言是否支持此功能。

functional-programming nix
1个回答
3
投票

这应该起作用:

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

您可以在这里了解更多信息:

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

© www.soinside.com 2019 - 2024. All rights reserved.