是否可以取消引用列表中包含的变量,以获取其值?例如:
(define one 1)
(define two 2)
(define list '(one two))
(display (list-ref list 0))
此处list-ref
引用one
,display
以字母显示one
。可以改为one
取消引用同音变量包含的值吗?
答案 0 :(得分:6)
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))
答案 1 :(得分:1)
这种情况正在发生,因为引用的列表包含两个符号,one
和two
。请尝试以下方法:
(display (eval (list-ref list 0)))
解决该问题。