语句后的代码块

当以语句形式调用宏时,宏可以接受 of,elif,else,except,finally 和 do 代码块 (包括诸如带有例程参数的 do 等其它形式)。

  1. macro performWithUndo(task, undo: untyped) = ...
  2. performWithUndo do:
  3. # 若干行用来执行
  4. # 任务的代码
  5. do:
  6. # 用来撤消操作的代码
  7. let num = 12
  8. # 如果没有初始代码块,可只使用一个冒号
  9. match (num mod 3, num mod 5):
  10. of (0, 0):
  11. echo "FizzBuzz"
  12. of (0, _):
  13. echo "Fizz"
  14. of (_, 0):
  15. echo "Buzz"
  16. else:
  17. echo num