1. ホーム
  2. function

[解決済み] Clojureで関数の引数にデフォルト値を作成する方法

2022-06-05 18:26:54

質問

私はこれを持っています。

(defn string->integer [str & [base]])
  (Integer/parseInt str (if (nil? base) 10 base)))

(文字列->整数 "10")です。
(文字列->整数"FF" 16)

でも、もっといい方法があるはずです。

どのように解決するのか?

関数は、シグネチャがアリティで異なる場合、複数のシグネチャを持つことができます。 それを利用して、デフォルト値を供給することができます。

(defn string->integer 
  ([s] (string->integer s 10))
  ([s base] (Integer/parseInt s base)))

なお,仮に falsenil は両方とも非値とみなされます。 (if (nil? base) 10 base) を短くすることができます。 (if base base 10) に、あるいはさらに (or base 10) .