diff options
| author | Li Jin <dragon-fly@qq.com> | 2026-02-12 10:29:07 +0800 |
|---|---|---|
| committer | Li Jin <dragon-fly@qq.com> | 2026-02-12 10:29:07 +0800 |
| commit | d63779ec0a6f00854f53b48b0f6a67707879b6d1 (patch) | |
| tree | f9d7e736c31601dcfe1781a7f9eef9bfb3e3fed8 /doc/docs/zh | |
| parent | 82e9b379db4eb77f82cf5693e476597feb18e40b (diff) | |
| download | yuescript-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.md | 22 | ||||
| -rw-r--r-- | doc/docs/zh/doc/control-flow/for-loop.md | 16 | ||||
| -rw-r--r-- | doc/docs/zh/doc/control-flow/while-loop.md | 42 | ||||
| -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.md | 44 |
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 |   月之脚本的 **do** 也可以用作表达式。允许你将多行代码的处理合并为一个表达式,并将 do 语句代码块的最后一个语句作为表达式返回的结果。 | 23 |   月之脚本的 **do** 也可以用作表达式。允许你将多行代码的处理合并为一个表达式,并将 do 语句代码块的最后一个语句作为表达式返回的结果。`do` 表达式支持通过 `break` 打断执行流并提前返回多个值。 |
| 24 | |||
| 25 | ```yuescript | ||
| 26 | status, value = do | ||
| 27 | n = 12 | ||
| 28 | if n > 10 | ||
| 29 | break "large", n | ||
| 30 | break "small", n | ||
| 31 | ``` | ||
| 32 | |||
| 33 | <YueDisplay> | ||
| 34 | |||
| 35 | ```yue | ||
| 36 | status, 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 |
| 26 | counter = do | 46 | counter = 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 |   此外,for 循环还支持带返回值的 break 语句,这样循环本身就可以作为一个表达式,在满足条件时提前退出并返回有意义的结果。 | 89 |   此外,for 循环还支持带返回值的 break 语句,这样循环本身就可以作为一个表达式,在满足条件时提前退出并返回有意义的结果。for 循环表达式支持 `break` 返回多个值。 |
| 90 | 90 | ||
| 91 |   例如,查找第一个大于 10 的数字: | 91 |   例如,查找第一个大于 10 的数字: |
| 92 | 92 | ||
| @@ -104,6 +104,20 @@ first_large = for n in *numbers | |||
| 104 | 104 | ||
| 105 | </YueDisplay> | 105 | </YueDisplay> |
| 106 | 106 | ||
| 107 | ```yuescript | ||
| 108 | key, score = for k, v in pairs data | ||
| 109 | break k, v * 10 if k == "target" | ||
| 110 | ``` | ||
| 111 | |||
| 112 | <YueDisplay> | ||
| 113 | |||
| 114 | ```yue | ||
| 115 | key, score = for k, v in pairs data | ||
| 116 | break k, v * 10 if k == "target" | ||
| 117 | ``` | ||
| 118 | |||
| 119 | </YueDisplay> | ||
| 120 | |||
| 107 |   你还可以结合 for 循环表达式与 continue 语句来过滤值。 | 121 |   你还可以结合 for 循环表达式与 continue 语句来过滤值。 |
| 108 | 122 | ||
| 109 |   注意出现在函数体末尾的 for 循环,不会被当作是一个表达式并将循环结果累积到一个列表中作为返回值(相反,函数将返回 nil)。如果要函数末尾的循环转换为列表表达式,可以显式地使用返回语句加 for 循环表达式。 | 123 |   注意出现在函数体末尾的 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 |   像 for 循环的语法一样,while 循环也可以作为一个表达式使用。为了使函数返回 while 循环的累积列表值,必须明确使用返回语句返回 while 循环表达式。 | 48 |   像 for 循环的语法一样,while 循环也可以作为一个表达式使用。while / until 循环表达式支持 `break` 返回多个值。 |
| 49 | |||
| 50 | ```yuescript | ||
| 51 | value, doubled = while true | ||
| 52 | n = get_next! | ||
| 53 | break n, n * 2 if n > 10 | ||
| 54 | ``` | ||
| 55 | |||
| 56 | <YueDisplay> | ||
| 57 | |||
| 58 | ```yue | ||
| 59 | value, doubled = while true | ||
| 60 | n = get_next! | ||
| 61 | break n, n * 2 if n > 10 | ||
| 62 | ``` | ||
| 63 | |||
| 64 | </YueDisplay> | ||
| 65 | |||
| 66 |   为了使函数返回 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 |   repeat 循环表达式同样支持 `break` 返回多个值: | ||
| 93 | |||
| 94 | ```yuescript | ||
| 95 | i = 1 | ||
| 96 | value, scaled = repeat | ||
| 97 | break i, i * 100 if i > 3 | ||
| 98 | i += 1 | ||
| 99 | until false | ||
| 100 | ``` | ||
| 101 | |||
| 102 | <YueDisplay> | ||
| 103 | |||
| 104 | ```yue | ||
| 105 | i = 1 | ||
| 106 | value, scaled = repeat | ||
| 107 | break i, i * 100 if i > 3 | ||
| 108 | i += 1 | ||
| 109 | until 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 | ||
| 50 | result = with obj | ||
| 51 | break .value | ||
| 52 | ``` | ||
| 53 | |||
| 54 | <YueDisplay> | ||
| 55 | |||
| 56 | ```yue | ||
| 57 | result = with obj | ||
| 58 | break .value | ||
| 59 | ``` | ||
| 60 | |||
| 61 | </YueDisplay> | ||
| 62 | |||
| 63 | 在 `with` 中使用 `break value` 后,`with` 表达式将不再返回其目标对象,而是返回 `break` 给出的值。 | ||
| 64 | |||
| 65 | ```yuescript | ||
| 66 | a = with obj | ||
| 67 | .x = 1 | ||
| 68 | -- a 是 obj | ||
| 69 | |||
| 70 | b = with obj | ||
| 71 | break .x | ||
| 72 | -- b 是 .x,不是 obj | ||
| 73 | ``` | ||
| 74 | |||
| 75 | <YueDisplay> | ||
| 76 | |||
| 77 | ```yue | ||
| 78 | a = with obj | ||
| 79 | .x = 1 | ||
| 80 | -- a 是 obj | ||
| 81 | |||
| 82 | b = 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 |
