次のコードは#f
生成し、#t
文字列を使用してシンボルを参照するにはどうすればよいですか?
1: (define dict (hash 1 'a 2 'b))
2: (hash? (string->symbol "dict"))
3: (symbol? (string->symbol "dict"))
は基本的に、私は、文字列"dict"
は、私はそれをどのように行うことができます行1で定義されたハッシュdict
に変換されますしたいですか?
次のコードは#f
生成し、#t
文字列を使用してシンボルを参照するにはどうすればよいですか?
1: (define dict (hash 1 'a 2 'b))
2: (hash? (string->symbol "dict"))
3: (symbol? (string->symbol "dict"))
は基本的に、私は、文字列"dict"
は、私はそれをどのように行うことができます行1で定義されたハッシュdict
に変換されますしたいですか?
そうのような最も簡単な方法は、eval
にstring->symbol
の結果、次のようになります。
> (define dict 5)
> (eval (string->symbol "dict"))
5
しかし、eval
が関与得ることはほとんどない行うには正しいことではありません。値を持つ文字列を関連付けるもっと良い方法は、@yi_Hが示すように、ハッシュテーブルを使用することです:
> (define ht (make-hash))
> (hash-set! ht "dict" 5)
> (hash-ref ht "dict")
5
更新:私は当初[racket]
タグを逃しました。この例では#lang racket
と動作するはずです。
この目的のために 'eval'を使うのは間違っています。 –
また、この回答は、デフォルトのラケット名ではないR6RS関数を使用していることに注意してください。 '#lang racket'では、' make-hash'と 'hash-set! 'などを使います。 –
+1は、「evalが関与する」ことは、決して正しいことではありません。 Racketのevalの制限については、http://docs.racket-lang.org/guide/eval.html –
ハッシュテーブルに 'dict'を入れて見てください。 –
@ Jeremy:タイトルを編集してくれてありがとう。私はそれが私が求めようとしていたものだと思います。 –