ランダムな文字列を取得する(Clojure)



Get Random String



処女の投稿、何を書くべきかわかりませんが、今日はグループに投稿します。

(defn ^String rand-str [N]
(loop [sb (StringBuilder. '')
x N
s (get '0123456789' (rand-int 10))]
(if (> x 0)
(recur (-> sb (.append s)) (- x 1)
(get '0123456789' (rand-int 10)))
(str sb)))
)

(rand-str 15)


これは私が書いたものです、私はそれが好きではありません( '0123456789'(rand-int 10)を取得します)、そして変更しました:
(defn ^String rand-str [N]
(loop [sb (StringBuilder. '')
x ( + 1 N)
s ]
(if (> x 0)
(recur (-> sb (.append s)) (- x 1)
(get 'abcdefghijklmnopqrstuvwxyz0123456789' (rand-int 37)))
(clojure.string/trim sb)))
)

(rand-str 10)


ただし、グループの友達はもっと簡潔だと思います。
(defn rand-str [n]
(clojure.string/join (repeatedly n
#(rand-nth 'abcdefghijklmnopqrstuvwxyz0123456789'))))
(rand-str 10)


他の人はこれを書きます:
(subs (str (Object.)) 17)