noSideEffect编译指示
noSideEffect 编译指示用于标记proc / iterator没有副作用。 这意味着proc / iterator仅更改可从其参数访问的位置,并且返回值仅取决于参数。 如果它的参数都没有类型var T
或ref T
或ptr T
,这意味着没有修改位置。 如果编译器无法验证,则将proc / iterator标记为无副作用是一个静态错误。
作为一种特殊的语义规则,内置的 debugEcho 没有副作用,因此它可以用于调试标记为 noSideEffect 的例程。
func 是proc的语法糖,没有副作用:
- func `+` (x, y: int): int
要覆盖编译器的副作用分析,可以使用 {.noSideEffect.} 编译指示块:
- func f() =
- {.noSideEffect.}:
- echo "test"