即使在阅读了 Nix 手册之后,仍然对 Nix 表达式的真正含义感到困惑。有时它们被称为派生,但存储派生也有其他含义。
最佳答案
在 Nix 中,Nix 表达式只是您可以用 Nix 语言编写的任何类型的值的通用术语。 Nix 表达式可以是集合、列表、数字、字符串、函数、名称、算术运算、函数调用等等。
Nix 表达式可以包含其他 Nix 表达式:例如,表达式 1 + 2
其中包含两个表达式:1
和 2
.
人们通常喜欢编写复杂的 Nix 表达式来表示如何构建软件。这些表达式实际上只是具有一些特殊属性的集合。 Nix 软件可以评估这样的表达式并将其转换为 .drv
文件(描述如何构建某些软件的一种非常简单、紧凑的方式),然后可以构建它。
您可以使用 Nix 语言和 Nix 表达式做很多不涉及派生或构建软件的事情。 nix eval
命令可让您评估 Nix 表达式。运行 nix eval --help
查看其帮助屏幕,或运行这些命令来计算一些简单的表达式:
nix eval '(1 + 2)' # gives 3
nix eval '({ a = 1; b = 2; }.a)' # gives 1
(出于某种原因,这个命令似乎要求在它评估的大多数 Nix 表达式周围放置括号,但这似乎是一个错误或奇怪的设计选择,并且括号不是每个 Nix 表达式的重要组成部分。)
关于nix - 关于 Nix 包管理的 Nix 表达式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58243554/