返回 void 和 {.noreturn.} 有什么区别?

What's the difference between returning void and {.noreturn.}?

在 Nim 中,noReturn pragma 标记一个从不 returns 的过程。

这与 returns void 的函数有何不同?

返回void意味着函数return什么都没有:

proc saySomething(): void =
  echo "something"

空括号和: void是可选的:

proc saySomething =
  echo "something"

noReturn 注释函数意味着该函数根本不会 return:

proc killTheProgram {.noReturn.} =
  quit(0)

proc raiseSomething {.noReturn.} =
  raise newException(ValueError, "Something")