String 如何评估球拍中的弦乐

String 如何评估球拍中的弦乐,string,eval,racket,String,Eval,Racket,我试图理解如何让eval函数读取字符串并计算字符串中的内容 目前我知道 > (eval '(+ 1 2)) 3 但我对球拍的使用不是很了解。因此,目前我正试图获得它,以便我能够做到这一点: > (eval "(+ 1 2)") 3 如有任何有用资源的建议或链接,我们将不胜感激。您希望将read与open input string一起使用。像这样: -> (eval (read (open-input-string "(+ 1 2)"))) 3 您还可以将与字符

我试图理解如何让eval函数读取字符串并计算字符串中的内容

目前我知道

> (eval '(+ 1 2))
   3
但我对球拍的使用不是很了解。因此,目前我正试图获得它,以便我能够做到这一点:

> (eval "(+ 1 2)")
   3

如有任何有用资源的建议或链接,我们将不胜感激。

您希望将
read
open input string
一起使用。像这样:

-> (eval (read (open-input-string "(+ 1 2)")))
3
您还可以将
与字符串的输入一起使用

-> (with-input-from-string "(+ 1 2)"
     (lambda () (eval (read))))
3

我想这就是你想要的:而且,大多数惯用的代码都避免使用eval。也许你有一个例子,你真的需要它,但你可能想了解一下eval在Racket中的用法。我更喜欢使用
(eval(调用输入字符串“(+1 2)”read))
。为什么?1.字符串端口在
eval
之前自动关闭(与
打开输入字符串
解决方案不同;好的,因此对于字符串端口来说,这可能不太重要(除非您使用Guile;-),但仍然如此);2.它不使用流体/参数(与从字符串输入的
解决方案不同)。@ChrisJester-Young在某些情况下,是否希望使用它来更改代码而不是宏?我能想到一些,但我对宏的了解还不够透彻certain@frank就我个人而言,我会在我能想到的所有情况下使用宏,但请随意发布您认为
eval
更好的示例,我会让您知道的:-D@ChrisJester-Young我正在编写代码,从人体的体素表示生成三角形网格蒙皮,两段代码之间的唯一区别是某些变量名称中的“顶部”和“底部”。我可以在以后的某个地方发布,但是整个源代码可能太长了。然而,我总是可以发布最相关的部分。我想如果我把它贴上“球拍”的标签,你很可能会看到它;我在这个网站上看到了你的所有问题。谢谢你的贡献@弗兰克,你可以把你的代码放在一个要点中,然后链接到这里。而且,永远是我的荣幸;我很高兴能帮上忙。:-)