Я иду с этим:
(defn string->integer [str & [base]] (Integer/parseInt str (if (nil? base) 10 base))) (string->integer "10") (string->integer "FF" 16)
Но это должен быть лучший способ сделать это.
Функция может иметь несколько подписей, если подписи различаются по арности. Вы можете использовать это для предоставления значений по умолчанию.
(defn string->integer
([s] (string->integer s 10))
([s base] (Integer/parseInt s base)))
Обратите внимание, что если предположить, что false
и nil
оба считаются не значениями, (if (nil? Base) 10 base)
может быть сокращено до ] (если основание 10)
или далее до (или основание 10)
.