是否可以取消引用列表中包含的变量,以获取其值?例如:
(define one 1)
(define two 2)
(define list '(one two))
(display (list-ref list 0))
Run Code Online (Sandbox Code Playgroud)
这里list-ref
引用one
并以字母display
显示one
.可以改为one
取消引用同音变量包含的值吗?
Eval绝对可以解决这个问题...但是像大多数适用eval的情况一样,它是一个庞大且危险的锤子.
Matthew Flatt关于这个主题的博客文章已成为首选解释:
http://blog.racket-lang.org/2011/10/on-eval-in-dynamic-languages-generally.html
如果没有在Racket中使用eval,你可以这样做.剥离残余,"dict-ref"可以在"关联列表"中找到命名元素(或元素).
#lang racket
(define data
'((one 1)
(two 2)))
(define wanted-list '(two one))
;; evaluates to '((2) (1)):
(for/list ([wanted wanted-list])
(dict-ref data wanted))
Run Code Online (Sandbox Code Playgroud)