aboutsummaryrefslogtreecommitdiff
path: root/doc/docs/zh
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2026-02-12 10:29:07 +0800
committerLi Jin <dragon-fly@qq.com>2026-02-12 10:29:07 +0800
commitd63779ec0a6f00854f53b48b0f6a67707879b6d1 (patch)
treef9d7e736c31601dcfe1781a7f9eef9bfb3e3fed8 /doc/docs/zh
parent82e9b379db4eb77f82cf5693e476597feb18e40b (diff)
downloadyuescript-d63779ec0a6f00854f53b48b0f6a67707879b6d1.tar.gz
yuescript-d63779ec0a6f00854f53b48b0f6a67707879b6d1.tar.bz2
yuescript-d63779ec0a6f00854f53b48b0f6a67707879b6d1.zip
Updated docs.
Diffstat (limited to 'doc/docs/zh')
-rw-r--r--doc/docs/zh/doc/advanced/do.md22
-rw-r--r--doc/docs/zh/doc/control-flow/for-loop.md16
-rw-r--r--doc/docs/zh/doc/control-flow/while-loop.md42
-rw-r--r--doc/docs/zh/doc/language-basics/module.md (renamed from doc/docs/zh/doc/advanced/module.md)0
-rw-r--r--doc/docs/zh/doc/objects/with-statement.md44
5 files changed, 121 insertions, 3 deletions
diff --git a/doc/docs/zh/doc/advanced/do.md b/doc/docs/zh/doc/advanced/do.md
index a2d5d19..b3f61af 100644
--- a/doc/docs/zh/doc/advanced/do.md
+++ b/doc/docs/zh/doc/advanced/do.md
@@ -20,7 +20,27 @@ print var -- 这里是nil
20 20
21</YueDisplay> 21</YueDisplay>
22 22
23&emsp;&emsp;月之脚本的 **do** 也可以用作表达式。允许你将多行代码的处理合并为一个表达式,并将 do 语句代码块的最后一个语句作为表达式返回的结果。 23&emsp;&emsp;月之脚本的 **do** 也可以用作表达式。允许你将多行代码的处理合并为一个表达式,并将 do 语句代码块的最后一个语句作为表达式返回的结果。`do` 表达式支持通过 `break` 打断执行流并提前返回多个值。
24
25```yuescript
26status, value = do
27 n = 12
28 if n > 10
29 break "large", n
30 break "small", n
31```
32
33<YueDisplay>
34
35```yue
36status, value = do
37 n = 12
38 if n > 10
39 break "large", n
40 break "small", n
41```
42
43</YueDisplay>
24 44
25```yuescript 45```yuescript
26counter = do 46counter = do
diff --git a/doc/docs/zh/doc/control-flow/for-loop.md b/doc/docs/zh/doc/control-flow/for-loop.md
index 52180b7..97e66f9 100644
--- a/doc/docs/zh/doc/control-flow/for-loop.md
+++ b/doc/docs/zh/doc/control-flow/for-loop.md
@@ -86,7 +86,7 @@ doubled_evens = for i = 1, 20
86 86
87</YueDisplay> 87</YueDisplay>
88 88
89&emsp;&emsp;此外,for 循环还支持带返回值的 break 语句,这样循环本身就可以作为一个表达式,在满足条件时提前退出并返回有意义的结果。 89&emsp;&emsp;此外,for 循环还支持带返回值的 break 语句,这样循环本身就可以作为一个表达式,在满足条件时提前退出并返回有意义的结果。for 循环表达式支持 `break` 返回多个值。
90 90
91&emsp;&emsp;例如,查找第一个大于 10 的数字: 91&emsp;&emsp;例如,查找第一个大于 10 的数字:
92 92
@@ -104,6 +104,20 @@ first_large = for n in *numbers
104 104
105</YueDisplay> 105</YueDisplay>
106 106
107```yuescript
108key, score = for k, v in pairs data
109 break k, v * 10 if k == "target"
110```
111
112<YueDisplay>
113
114```yue
115key, score = for k, v in pairs data
116 break k, v * 10 if k == "target"
117```
118
119</YueDisplay>
120
107&emsp;&emsp;你还可以结合 for 循环表达式与 continue 语句来过滤值。 121&emsp;&emsp;你还可以结合 for 循环表达式与 continue 语句来过滤值。
108 122
109&emsp;&emsp;注意出现在函数体末尾的 for 循环,不会被当作是一个表达式并将循环结果累积到一个列表中作为返回值(相反,函数将返回 nil)。如果要函数末尾的循环转换为列表表达式,可以显式地使用返回语句加 for 循环表达式。 123&emsp;&emsp;注意出现在函数体末尾的 for 循环,不会被当作是一个表达式并将循环结果累积到一个列表中作为返回值(相反,函数将返回 nil)。如果要函数末尾的循环转换为列表表达式,可以显式地使用返回语句加 for 循环表达式。
diff --git a/doc/docs/zh/doc/control-flow/while-loop.md b/doc/docs/zh/doc/control-flow/while-loop.md
index 3c624fe..0138d85 100644
--- a/doc/docs/zh/doc/control-flow/while-loop.md
+++ b/doc/docs/zh/doc/control-flow/while-loop.md
@@ -45,7 +45,25 @@ until running == false do my_function!
45 45
46</YueDisplay> 46</YueDisplay>
47 47
48&emsp;&emsp;像 for 循环的语法一样,while 循环也可以作为一个表达式使用。为了使函数返回 while 循环的累积列表值,必须明确使用返回语句返回 while 循环表达式。 48&emsp;&emsp;像 for 循环的语法一样,while 循环也可以作为一个表达式使用。while / until 循环表达式支持 `break` 返回多个值。
49
50```yuescript
51value, doubled = while true
52 n = get_next!
53 break n, n * 2 if n > 10
54```
55
56<YueDisplay>
57
58```yue
59value, doubled = while true
60 n = get_next!
61 break n, n * 2 if n > 10
62```
63
64</YueDisplay>
65
66&emsp;&emsp;为了使函数返回 while 循环的累积列表值,必须明确使用返回语句返回 while 循环表达式。
49 67
50## repeat 循环 68## repeat 循环
51 69
@@ -70,3 +88,25 @@ until i == 0
70``` 88```
71 89
72</YueDisplay> 90</YueDisplay>
91
92&emsp;&emsp;repeat 循环表达式同样支持 `break` 返回多个值:
93
94```yuescript
95i = 1
96value, scaled = repeat
97 break i, i * 100 if i > 3
98 i += 1
99until false
100```
101
102<YueDisplay>
103
104```yue
105i = 1
106value, scaled = repeat
107 break i, i * 100 if i > 3
108 i += 1
109until false
110```
111
112</YueDisplay>
diff --git a/doc/docs/zh/doc/advanced/module.md b/doc/docs/zh/doc/language-basics/module.md
index 6c90f0e..6c90f0e 100644
--- a/doc/docs/zh/doc/advanced/module.md
+++ b/doc/docs/zh/doc/language-basics/module.md
diff --git a/doc/docs/zh/doc/objects/with-statement.md b/doc/docs/zh/doc/objects/with-statement.md
index 0925050..338e2cc 100644
--- a/doc/docs/zh/doc/objects/with-statement.md
+++ b/doc/docs/zh/doc/objects/with-statement.md
@@ -44,6 +44,50 @@ file = with File "favorite_foods.txt"
44 44
45</YueDisplay> 45</YueDisplay>
46 46
47`with` 表达式支持 `break` 返回一个值:
48
49```yuescript
50result = with obj
51 break .value
52```
53
54<YueDisplay>
55
56```yue
57result = with obj
58 break .value
59```
60
61</YueDisplay>
62
63在 `with` 中使用 `break value` 后,`with` 表达式将不再返回其目标对象,而是返回 `break` 给出的值。
64
65```yuescript
66a = with obj
67 .x = 1
68-- a 是 obj
69
70b = with obj
71 break .x
72-- b 是 .x,不是 obj
73```
74
75<YueDisplay>
76
77```yue
78a = with obj
79 .x = 1
80-- a 是 obj
81
82b = with obj
83 break .x
84-- b 是 .x,不是 obj
85```
86
87</YueDisplay>
88
89与 `for` / `while` / `repeat` / `do` 不同,`with` 只支持一个 break 返回值。
90
47或者… 91或者…
48 92
49```yuescript 93```yuescript