Bil*_*dri 0 lisp scheme common-lisp
我们怎样才能用方案语言中的字符串获取变量值,因为我们可以在Common Lisp中实现这一点:
> (defvar s 3)
> S
> (symbol-value (intern "S"))
> 3
Run Code Online (Sandbox Code Playgroud)
我从闭包中访问父函数的参数.
编辑:我找到了这个解决方案,但我不能使用eval,因为它在顶层评估.寻找替代品.
(eval (string->symbol "s"))
Run Code Online (Sandbox Code Playgroud)
编辑2:我发现Common lisp代码也试图在全局空间中找到符号.所以这个问题基本上都适用于Lisps(Common Lisp,Scheme).
不要那样做!
变量用于在编译时知道变量.在这种情况下,它永远不是一个字符串.您仍然可以在编译时对字符串进行推理,但您的代码也需要与名称建立关系才能使其变得有趣.当您使用eval
或其他形式评估结构并在运行时编译/运行数据时,您可能做得不对(但并非总是如此.我在我20年的职业生涯中eval
故意在生产代码中使用过两次)
如果要存储值,请使用数据结构.一个assoc会模仿动态环境.如果大小无害,您还可以使用带有关卡指示符的哈希.