gpt4 book ai didi

nix - nix 覆盖中的 self 和 super

转载 作者:行者123 更新时间:2023-12-04 19:36:56 24 4
gpt4 key购买 nike

在 nix 中,overlay 是一个带有 2 个参数的函数:selfsuper .基于 manual , self对应于最终的包集(或其他一些人称之为固定点计算的结果)并且仅在处理依赖项时使用。虽然 supernixpkgs前几个阶段的评估结果并且仅在您引用要覆盖或访问某些功能的包时使用。

可悲的是我真的不明白这一点。 nixpkgs用什么方式被覆盖更新,因此上面提到了 2 个限制?

最佳答案

这些限制来自属性的评估应该终止的要求。

假设您要覆盖 hello包裹。要引用包的旧定义,您需要使用 super.hello ,因为可以在不评估您的 hello 的情况下评估该属性在您的叠加层中定义。如果您改为引用 self.hello ,这意味着用于评估最终 hello属性,Nix 将不得不评估 self.hello ,它引用了最后的 hello属性,引用 self.hello ,依此类推,创建无限递归。
self实际上可以用于引用函数,但约定似乎是使用 super反而。下一个覆盖层可能会修补 lib.head 的想法功能不是很诱人,虽然使用 super仍然可以在以前的叠加层中完成相同的操作。

您可能还想查看 this excellent NixCon 2017 presentation by Nicolas .他既介绍了这个概念,又解释了如何以最佳方式使用它。

关于nix - nix 覆盖中的 self 和 super ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52401177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com