nta*_*lbs 12 character clojure sequence
我想生成从'a'到'z'的字符序列.在scala中,我可以非常简单地生成字符序列:
('a' to 'z')
Run Code Online (Sandbox Code Playgroud)
但在clojure中,我最终得到以下代码:
(->> (range (int \a) (inc (int \z))) (map char))
Run Code Online (Sandbox Code Playgroud)
要么
(map char (range (int \a) (inc (int \z))))
Run Code Online (Sandbox Code Playgroud)
在我看来,这很冗长.有没有更好的方法呢?
mik*_*era 31
如果代码看起来"冗长",那么通常只是表明你应该将它分解为一个单独的函数.作为奖励,您有机会为该功能提供有意义的名称.
只需做这样的事情,你的代码就会更具可读性:
(defn char-range [start end]
(map char (range (int start) (inc (int end)))))
(char-range \a \f)
=> (\a \b \c \d \e \f)
Run Code Online (Sandbox Code Playgroud)
Sys*_*hus 14
根据这个StackOverflow答案,一个简单的解决方案是:
(map char (range 97 123))
AFAIK,没有像Scala那样奇特的方式.怎么样
(flatten (partition 1 "abcdefghijklmnopqrstuvwxyz"))
Run Code Online (Sandbox Code Playgroud)
更加花哨的方式,感谢@rhu
(seq "abcdefghijklmnopqrstuvwxyz") ; if you copied this from an earlier version, \w and \v were in the wrong positions
Run Code Online (Sandbox Code Playgroud)