gpt4 book ai didi

nim-lang - 如何在 Nim 中调试打印变量(名称)及其值?

转载 作者:行者123 更新时间:2023-12-04 01:40:17 25 4
gpt4 key购买 nike

在快速而肮脏的调试过程中,我经常使用以下表达式:

echo "variable1: ", variable1, " variable2: ", variable2

我如何利用 Nim 的宏系统来避免重复变量名称?

最佳答案

您可以使用一个可变参数宏来迭代参数,并生成一个 AST 来打印节点的字符串文字及其值。像这样的东西:

import macros

macro debug*(n: varargs[typed]): untyped =
result = newNimNode(nnkStmtList, n)
for i in 0..n.len-1:
if n[i].kind == nnkStrLit:
# pure string literals are written directly
result.add(newCall("write", newIdentNode("stdout"), n[i]))
else:
# other expressions are written in <expression>: <value> syntax
result.add(newCall("write", newIdentNode("stdout"), toStrLit(n[i])))
result.add(newCall("write", newIdentNode("stdout"), newStrLitNode(": ")))
result.add(newCall("write", newIdentNode("stdout"), n[i]))
if i != n.len-1:
# separate by ", "
result.add(newCall("write", newIdentNode("stdout"), newStrLitNode(", ")))
else:
# add newline
result.add(newCall("writeLine", newIdentNode("stdout"), newStrLitNode("")))

用法示例:

let x = 2
let y = 3
debug("hello", x, y, x*y)

输出:
hello, x: 1, y: 2, x * y: 6

关于nim-lang - 如何在 Nim 中调试打印变量(名称)及其值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47443206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com