gpt4 book ai didi

generic-programming - 如何在 Nim 模板中获取 expr 的字符串表示形式

转载 作者:行者123 更新时间:2023-12-04 00:14:41 25 4
gpt4 key购买 nike

是否有可能在 template 中获取表达式(或标识符)的字符串表示形式?例如,有下一个代码:

template `*`*(name: expr) {.immediate.} =
var `name`* {.inject.}: string = ""
# Want to print 'name' here, not its value like with backticks

是否可以在模板中获取 name 表达式的字符串表示形式?

最佳答案

您可以使用系统模块中的 astToStr 魔法来执行此操作:

template foo*(name: untyped) =
var `name`* {.inject.}: string = ""
# Want to print 'name' here, not its value like with backticks
echo "the variable name is ", name.astToStr

foo test

输出将是:

the variable name is test

最新版本的编译器不鼓励使用 immediate pragma。有关详细信息,请参阅以下答案: typed vs untyped vs expr vs stmt in templates and macros

关于generic-programming - 如何在 Nim 模板中获取 expr 的字符串表示形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31565006/

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