(defn num-as-words [n]
(let [words '("zero" "one" "two" "three" "four"
"five" "six" "seven" "eight" "nine")]
(clojure.string/join "-"
(map (fn [x] (nth words (Integer. (re-find #"\d" (str x))))) (str n)))))
この関数は、num-as-wordsと呼ばれ、整数を取り、完全な単語として表示するあなたはそれを返すでしょう(123)(1,2,3)。Clojureで完全な言葉で(負ではない)整数を出力する関数を書く
私はマップを使って行っていますが、別の方法があるかどうか疑問に思っていましたか?私はまた、clojure.string/joinよりも言葉をつなぐ別の方法があるのだろうかと疑問に思っていました。私は最初にinterposeを使っていましたが、出力していた方法が好きではありませんでした( "one" - "two " "-" "三")。
ご協力いただきますようお願い申し上げます。ありがとうございます。
ありがとうございます。 の負の数値を入力した場合にエラー処理がどうなるか考えていますか? – danfs
@bigd答えを更新します。 – ntalbs
私は '(map#(nth words%))'をより単純な同等の '(map words) 'に置き換える自由を取ってきました。これはClojure関数ではなく、Java静的メソッドである 'Character/getNumericValue'では機能しません。 – Thumbnail