微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nix 表达式中的 AttributeSet 表达式

如何解决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"
}
  1. 这里 {a ? f,c ? ""}: a+b+c; 我们声明一个 函数属性{a ? f,c ? ""} 作为 论证。
  2. 这里func {b="o"; c=o;}我们将一个属性集({b="o"; c=o;})传递给 功能

在第一个表达式中,我们有“,”分隔属性集的键,而在第二个“,”中分隔键。为了表示属性集,我们使用两种不同的方法。这种理解是否正确。

解决方法

语法 { param ? default }: x 定义了一个匿名函数,该函数采用带有可选属性 param 的属性集。

在第二个“,”中分隔键。

在属性集中,您使用 ; 作为分隔符。我认为这是一个错字,因为您的示例是正确的。

您可以在 Nix manual 的函数定义中阅读有关“设置模式”的更多信息。

你的理解似乎是正确的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。