nim-lang - 如何在 Nim 中将非纯函数标记为纯函数
问题描述
有没有办法将非纯函数标记为纯函数p
?也许有一些杂注?
我p
用于调试,它不能在纯func
procs 中使用。
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中所述,但我建议不要这样做。
推荐阅读
- python - 由 Python os.system 调用时,备份输出 ANSI 颜色代码不起作用
- r - R:为什么 gbm 在泰坦尼克号数据上给出 NA 值?
- javascript - DataTable 在 Liferay Portlet 中不起作用
- javascript - 每 5 秒 JS 交换图像
- solidity - 我如何编写一份为我执行买卖的可靠合约
- github - Hetzner 错误:权限被拒绝(公钥)
- python - Tkinter 按钮未出现在框架上
- bash - Bash:当我尝试将此日期格式转换为纪元时,日期返回“无效日期”
- python - 制作 subprocess.Popen 切换目录并使用路径执行命令是未知的 python
- reactjs - 如何执行 Redux 调度?