如何解决Nix 表达式中的 AttributeSet 表达式
如果下面的nix表达式
let
f = "f";
o = "o";
b = "b";
func = {a ? f,b ? "a",c ? ""}: a+b+c; #only modify this line!
in
rec {
foo = func {b="o"; c=o;}; #must evaluate to "foo"
bar = func {a=b; c="r";}; #must evaluate to "bar"
foobar = func {a=foo;b=bar;}; #must evaluate to "foobar"
}
- 这里
{a ? f,c ? ""}: a+b+c;
我们声明一个 函数将属性集{a ? f,c ? ""}
作为 论证。 - 这里
func {b="o"; c=o;}
我们将一个属性集({b="o"; c=o;}
)传递给 功能。
在第一个表达式中,我们有“,”分隔属性集的键,而在第二个“,”中分隔键。为了表示属性集,我们使用两种不同的方法。这种理解是否正确。
解决方法
语法 { param ? default }: x
定义了一个匿名函数,该函数采用带有可选属性 param
的属性集。
在第二个“,”中分隔键。
在属性集中,您使用 ;
作为分隔符。我认为这是一个错字,因为您的示例是正确的。
您可以在 Nix manual 的函数定义中阅读有关“设置模式”的更多信息。
你的理解似乎是正确的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。