aboutsummaryrefslogtreecommitdiff
path: root/doc/docs/zh
diff options
context:
space:
mode:
Diffstat (limited to 'doc/docs/zh')
-rwxr-xr-xdoc/docs/zh/doc/README.md41
1 files changed, 41 insertions, 0 deletions
diff --git a/doc/docs/zh/doc/README.md b/doc/docs/zh/doc/README.md
index 0257dee..90d1820 100755
--- a/doc/docs/zh/doc/README.md
+++ b/doc/docs/zh/doc/README.md
@@ -371,6 +371,47 @@ print $LINE -- 获取当前代码行数:2
371</pre> 371</pre>
372</YueDisplay> 372</YueDisplay>
373 373
374### 用宏生成宏
375
376在月之脚本中,宏函数允许你在编译时生成代码。通过嵌套的宏函数,你可以创建更复杂的生成模式。这个特性允许你定义一个宏函数,用它来生成另一个宏函数,从而实现更加动态的代码生成。
377
378```moonscript
379macro Enum = (...) ->
380 items = {...}
381 itemSet = {item, true for item in *items}
382 (item) ->
383 error "got \"#{item}\", expecting one of #{table.concat items, ', '}" unless itemSet[item]
384 "\"#{item}\""
385
386macro BodyType = $Enum(
387 Static
388 Dynamic
389 Kinematic
390)
391
392print "有效的枚举类型:", $BodyType Static
393-- print "编译报错的枚举类型:", $BodyType Unknown
394```
395<YueDisplay>
396<pre>
397macro Enum = (...) ->
398 items = {...}
399 itemSet = {item, true for item in *items}
400 (item) ->
401 error "got \"#{item}\", expecting one of #{table.concat items, ', '}" unless itemSet[item]
402 "\"#{item}\""
403
404macro BodyType = $Enum(
405 Static
406 Dynamic
407 Kinematic
408)
409
410print "有效的枚举类型:", $BodyType Static
411-- print "编译报错的枚举类型:", $BodyType Unknown
412</pre>
413</YueDisplay>
414
374## 操作符 415## 操作符
375 416
376Lua的所有二元和一元操作符在月之脚本中都是可用的。此外,**!=** 符号是 **~=** 的别名,而 **\\** 或 **::** 均可用于编写链式函数调用,如写作 `tb\func!` 或 `tb::func!`。此外月之脚本还提供了一些其他特殊的操作符,以编写更具表达力的代码。 417Lua的所有二元和一元操作符在月之脚本中都是可用的。此外,**!=** 符号是 **~=** 的别名,而 **\\** 或 **::** 均可用于编写链式函数调用,如写作 `tb\func!` 或 `tb::func!`。此外月之脚本还提供了一些其他特殊的操作符,以编写更具表达力的代码。