Как создать значение по умолчанию для аргумента функции в Clojure

Я иду с этим:

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

(string->integer "10")
(string->integer "FF" 16)

Но это должен быть лучший способ сделать это.

121
задан jcubic 8 July 2010 в 22:01
поделиться

1 ответ

Функция может иметь несколько подписей, если подписи различаются по арности. Вы можете использовать это для предоставления значений по умолчанию.

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

Обратите внимание, что если предположить, что false и nil оба считаются не значениями, (if (nil? Base) 10 base) может быть сокращено до ] (если основание 10) или далее до (или основание 10) .

161
ответ дан 24 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: