使用地图映射字符串

Oli*_*ini 1 clojure

(def conversions {"G" "C"
                  "C" "G"
                  "T" "A"
                  "A" "U"})

(defn to-rna [dna]
  (map conversions dna)
)

(conversions "G") ;; Gives "C"

(to-rna "GC")     ;; Gives (nil nil)
Run Code Online (Sandbox Code Playgroud)

我正在尝试进行转换字母的练习。我有一个可行的解决方案,但我不喜欢它。我觉得上面的方法应该可行,但显然我错了,因为事实并非如此。

有人可以向我解释这是为什么,以及我如何正确实现这一目标?

dpa*_*sen 5

当映射到字符串时,它将字符串视为字符序列。因此,您的代码最终在映射中寻找\ G和\ C条目,两者均返回nil。


Ala*_*son 5

正如dpassen所说,您需要java.lang.Character在地图中放置一个 ,而不是长度为1的字符串。尝试这个:

(def conversions { \G  \C
                   \C  \G
                   \T  \A
                   \A  \U })
Run Code Online (Sandbox Code Playgroud)