如何在Nim中将非纯函数标记为纯函数
有没有办法将非纯函数标记为纯函数p?也许有一些pragma?
我p用于调试,不能在纯funcproc 中使用。
操场
proc p(message: string): void = echo message
func purefn: void =
p "track"
purefn()
错误:
/usercode/in.nim(3, 6) Error: 'purefn' can have side effects
回答
好吧,首先您可以使用debugEcho代替echo- 它没有副作用(并且它是专门为这样的用例制作的)。
在其他情况下,您可以通过以下方式向编译器“撒谎”:
proc p(message: string) =
{.cast(noSideEffect).}:
echo message
func purefn =
p "track"
purefn()
如https://nim-lang.org/docs/manual.html#pragmas-nosideeffect-pragma 中所述,但我建议不要这样做。