0

リスト内に含まれる変数を逆参照して、その値を取得することは可能ですか?例えば:

(define one 1)
(define two 2)

(define list '(one two))

(display (list-ref list 0))

ここでは、をlist-ref参照しone、文字でdisplay示しています。代わりに、同音異義語変数に含まれる値を逆参照oneできますか?one

4

2 に答える 2

6

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))
于 2012-06-05T21:30:58.983 に答える
1

That's happening because the quoted list contains two symbols, one and two. Try the following:

(display (eval (list-ref list 0)))

To resolve that symbol.

于 2012-06-05T21:00:47.203 に答える