nix - 关于 Nix 包管理的 Nix 表达式是什么?
问题描述
即使在阅读了 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 表达式的重要组成部分。)
推荐阅读
- json - 使用基本身份验证(Json)在帖子网址中添加用户名和密码
- scikit-learn - Keras 适合具有 2 个或更多输出类的分类器,必须指定度量标签
- azure - EventGrid 性能
- windows - 从多个 Git 存储库中提取并构建的脚本(Maven 项目)
- reactjs - 使用值属性时,输入字段在反应中不可点击
- excel - 使用方法:不为空时求和
- python - 将编码器从 AutoEncoder 连接到 LSTM
- python - 使用 Keras 构建的回归器神经网络只预测一个值
- sql - SQL中子查询列的求和运算
- c# - iText 7 - 旋转文本没有返回正确的角度