如何解决如何在 Nim 中将非纯函数标记为纯函数
有没有办法将非纯函数 p
标记为纯函数?也许有一些pragma?
我使用 p
进行调试,它不能在纯 func
过程中使用。
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中所述,但我不建议这样做。
,对于您的情况,您可以在 echo 中使用 debugEcho
来伪造没有副作用。
除此之外,如果您没有在实际代码中使用 {.cast(noSideEffect).}
,则可以使用 echo
编译指示:
proc p(message: string): void = echo message
func purefn: void =
{.cast(noSideEffect).}:
p "track"
purefn()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。