我想了解如何让eval函数读取一个字符串,并评估这里面的字符串的内容。
目前,我知道,
> (eval '(+ 1 2))
3
但我不使用球拍的那个知识渊博。 所以此刻我想要得到它,这样我可以这样做:
> (eval "(+ 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
:
-> (with-input-from-string "(+ 1 2)"
(lambda () (eval (read))))
3