aboutsummaryrefslogtreecommitdiff
path: root/doc/docs/zh/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/docs/zh/doc')
-rwxr-xr-xdoc/docs/zh/doc/README.md48
1 files changed, 48 insertions, 0 deletions
diff --git a/doc/docs/zh/doc/README.md b/doc/docs/zh/doc/README.md
index 0aea3d5..5cfe4e6 100755
--- a/doc/docs/zh/doc/README.md
+++ b/doc/docs/zh/doc/README.md
@@ -2121,6 +2121,54 @@ f2 arg1, arg2
2121</pre> 2121</pre>
2122</YueDisplay> 2122</YueDisplay>
2123 2123
2124### 前置返回表达式
2125
2126在深度嵌套的函数体中,为了提升返回值的可读性及编写便利性,我们新增了 “前置返回表达式” 语法。其形式如下:
2127
2128```moon
2129findFirstEven = (list): nil ->
2130 for item in *list
2131 if type(item) == "table"
2132 for sub in *item
2133 if sub % 2 == 0
2134 return sub
2135```
2136<YueDisplay>
2137<pre>
2138findFirstEven = (list): nil ->
2139 for item in *list
2140 if type(item) == "table"
2141 for sub in *item
2142 if sub % 2 == 0
2143 return sub
2144</pre>
2145</YueDisplay>
2146
2147这个写法等价于:
2148
2149```moon
2150findFirstEven = (list) ->
2151 for item in *list
2152 if type(item) == "table"
2153 for sub in *item
2154 if sub % 2 == 0
2155 return sub
2156 nil
2157```
2158<YueDisplay>
2159<pre>
2160findFirstEven = (list) ->
2161 for item in *list
2162 if type(item) == "table"
2163 for sub in *item
2164 if sub % 2 == 0
2165 return sub
2166 nil
2167</pre>
2168</YueDisplay>
2169
2170唯一的区别在于:你可以将函数的返回值表达式提前写在 `->` 或 `=>` 前,用以指示该函数应隐式返回该表达式的值。这样即使在多层循环或条件判断的场景下,也无需编写尾行悬挂的返回表达式,逻辑结构会更加直观清晰。
2171
2124## 反向回调 2172## 反向回调
2125 2173
2126反向回调用于减少函数回调的嵌套。它们使用指向左侧的箭头,并且默认会被定义为传入后续函数调用的最后一个参数。它的语法大部分与常规箭头函数相同,只是它指向另一方向,并且后续的函数体不需要进行缩进。 2174反向回调用于减少函数回调的嵌套。它们使用指向左侧的箭头,并且默认会被定义为传入后续函数调用的最后一个参数。它的语法大部分与常规箭头函数相同,只是它指向另一方向,并且后续的函数体不需要进行缩进。