From aef767e77046666de2f80c3fe8f3d23b694d37f0 Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Thu, 18 Sep 2025 08:30:02 +0800 Subject: [PATCH 1/4] Add Nix collection examples to QuickOverview.md Added examples of collections in Nix syntax, demonstrating how to define collections and nested attributes. --- src/tutorials/lang/QuickOverview.md | 31 ++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/tutorials/lang/QuickOverview.md b/src/tutorials/lang/QuickOverview.md index bc07414b..1e2ccee9 100644 --- a/src/tutorials/lang/QuickOverview.md +++ b/src/tutorials/lang/QuickOverview.md @@ -32,6 +32,34 @@ Nix语言的求值是惰性的,这意味着表达式不会在被绑定到变 ::: +## 集合 + +在 Nix 语法中,集合是最常见的数据类型之一,基本示例如下: +```nix +foo = { + a = 1; + b = 2; +}; +``` +此集合 `foo` 中有两个属性(attribute)`a` 和 `b`。 + +属性的值本身也可以是一个集合,例如将 `b` 的值改为集合 `{ c = 2; d = 3; }`: +```nix +foo = { + a = 1; + b = { + c = 2; + d = 3; + }; +}; +``` +也可以利用 `.` 表示嵌套集合中的属性,例如上面这段的一种等价写法如下: +```nix +foo.a = 1; +foo.b.c = 2; +foo.b.d = 3; +``` + ## 即时计算被直接依赖的值 ```bash @@ -39,7 +67,8 @@ nix-repl> { a.b.c = 1; } { a = { ... }; } ``` -在上面的例子中,我们输入了一个匿名集合,而这个匿名集合包含 `a` 集合。 +在上面的例子中,我们输入了一个匿名集合 `{ a.b.c = 1; }`,而这个匿名集合包含的属 +性 `a` 也是集合,或者说它包含一个 `a` 集合。 ::: note 匿名集合 From 481014126b278fcd120d44a6dcbf49f0a340c705 Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Thu, 18 Sep 2025 08:52:35 +0800 Subject: [PATCH 2/4] Reorder sections in QuickOverview.md --- src/tutorials/lang/QuickOverview.md | 50 ++++++++++++++--------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/tutorials/lang/QuickOverview.md b/src/tutorials/lang/QuickOverview.md index 1e2ccee9..df8afe47 100644 --- a/src/tutorials/lang/QuickOverview.md +++ b/src/tutorials/lang/QuickOverview.md @@ -8,31 +8,7 @@ Nix 语言的主要工作是**描述打包过程**。同时 Nix 语言也是一 ::: -## 交互模式 - -以下交互式教程需要使用 `nix repl` 命令调出交互命令模式: - -```bash -$ nix repl -Welcome to Nix 2.5.1. Type :? for help. -``` - -它有点像用于调试 JavaScript 的控制台或 Python 的交互模式? - -```bash -nix-repl> 1 + 2 # 输入表达式 -3 # 输出结果 -``` - - -::: tip 惰性求值 -Nix语言的求值是惰性的,这意味着表达式不会在被绑定到变量后立即求值,而是在该值被 -使用时才求值。 - - -::: - -## 集合 +## 基础知识:集合 在 Nix 语法中,集合是最常见的数据类型之一,基本示例如下: ```nix @@ -60,6 +36,30 @@ foo.b.c = 2; foo.b.d = 3; ``` +## 交互模式 + +以下交互式教程需要使用 `nix repl` 命令调出交互命令模式: + +```bash +$ nix repl +Welcome to Nix 2.5.1. Type :? for help. +``` + +它有点像用于调试 JavaScript 的控制台或 Python 的交互模式? + +```bash +nix-repl> 1 + 2 # 输入表达式 +3 # 输出结果 +``` + + +::: tip 惰性求值 +Nix语言的求值是惰性的,这意味着表达式不会在被绑定到变量后立即求值,而是在该值被 +使用时才求值。 + + +::: + ## 即时计算被直接依赖的值 ```bash From 7200e48ba7347200b9df275e33f0b1c42b7e2d68 Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Thu, 18 Sep 2025 09:11:09 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=9B=B4=E8=AF=BB=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E5=90=8E=E7=BB=AD=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tutorials/lang/QuickOverview.md | 31 ++--------------------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/src/tutorials/lang/QuickOverview.md b/src/tutorials/lang/QuickOverview.md index df8afe47..2707c802 100644 --- a/src/tutorials/lang/QuickOverview.md +++ b/src/tutorials/lang/QuickOverview.md @@ -8,34 +8,6 @@ Nix 语言的主要工作是**描述打包过程**。同时 Nix 语言也是一 ::: -## 基础知识:集合 - -在 Nix 语法中,集合是最常见的数据类型之一,基本示例如下: -```nix -foo = { - a = 1; - b = 2; -}; -``` -此集合 `foo` 中有两个属性(attribute)`a` 和 `b`。 - -属性的值本身也可以是一个集合,例如将 `b` 的值改为集合 `{ c = 2; d = 3; }`: -```nix -foo = { - a = 1; - b = { - c = 2; - d = 3; - }; -}; -``` -也可以利用 `.` 表示嵌套集合中的属性,例如上面这段的一种等价写法如下: -```nix -foo.a = 1; -foo.b.c = 2; -foo.b.d = 3; -``` - ## 交互模式 以下交互式教程需要使用 `nix repl` 命令调出交互命令模式: @@ -71,9 +43,10 @@ nix-repl> { a.b.c = 1; } 性 `a` 也是集合,或者说它包含一个 `a` 集合。 -::: note 匿名集合 +::: note 集合 匿名集合即没有分配名称的集合,与之对立的是命名集合,例如 `foo = { bar };`。 +注:上面代码所涉语法的说明被安排在后面,若读者在这里感到理解困难,可以提前参考后文的“属性集”与“属性访问”部分。 ::: From 2389c15568c049fd723337451c3de4917b4bd605 Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Thu, 18 Sep 2025 09:13:17 +0800 Subject: [PATCH 4/4] Clarify note on anonymous collections in QuickOverview --- src/tutorials/lang/QuickOverview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tutorials/lang/QuickOverview.md b/src/tutorials/lang/QuickOverview.md index 2707c802..46516519 100644 --- a/src/tutorials/lang/QuickOverview.md +++ b/src/tutorials/lang/QuickOverview.md @@ -46,7 +46,7 @@ nix-repl> { a.b.c = 1; } ::: note 集合 匿名集合即没有分配名称的集合,与之对立的是命名集合,例如 `foo = { bar };`。 -注:上面代码所涉语法的说明被安排在后面,若读者在这里感到理解困难,可以提前参考后文的“属性集”与“属性访问”部分。 +提示:与集合有关的说明被安排在后面,若读者在这里感到理解困难,可以提前参考后文的“属性集”与“属性访问”部分。 :::