3

次のようなハッシュマップを使用してリストを音訳しようとしています。

(map {"a" 0 "b" 1 "c" 2} ["a","c","b","a"])

吐き出したいもの:

[0,2,1,0]

どうすればいいですか?

訂正: 上記は機能しますが、これは機能しません:

  (map {"a" 0 "b" 1 "c" 2} (vec "acba"))

ここの違いは何ですか?

4

1 に答える 1

4

mapv代わりに使用

user=> (map {"a" 0 "b" 1 "c" 2} ["a" "c" "b" "a"])
(0 2 1 0)
user=> (mapv {"a" 0 "b" 1 "c" 2} ["a" "c" "b" "a"])
[0 2 1 0]

また:

user=> (map {"a" 0 "b" 1 "c" 2} (vec "acba"))
(nil nil nil nil)
user=> (vec "acba")
[\a \c \b \a]
user=> (= \a "a")
false

これは機能します(ただし、ラウンドアバウトです):

user=> (mapv {"a" 0 "b" 1 "c" 2} (map str (vec "acba")))
(0 2 1 0)
于 2013-05-06T19:39:28.837 に答える