Подтвердить что ты не робот

Проверьте класс что-то в clojure?

Я изучаю clojure и задаю очень простой вопрос: учитывая, что clojure имеет тип вывода, как вы можете определить, какой класс был выведен?

Например, каждый результат будет иметь разные типы данных:

(2)
(/ 2 3)
(/ 2.0 3)

Есть ли какая-то функция class, которая вернет тип данных? Кроме того, есть ли обычный способ лить что-то конкретным типом? Итак, во втором примере выше, что бы я сделал, если бы я хотел, чтобы результат был плавающим?

4b9b3361

Ответ 1

В библиотеке clojure.core есть функция type.

user> (type 2)
java.lang.Integer

user> (type (/ 2 3))
clojure.lang.Ratio

user> (type (/ 2.0 3))
java.lang.Double

Если вы хотите преобразовать заданное число в float, используйте float.

user> (float 10)
10.0

Ответ 2

Аналогичным образом вам может не понадобиться бросить, потому что работает следующее:

user> (Double/toString (/ 2 3))
"0.6666666666666667"

Однако это также делает:

user> (str (/ 2 3))
"0.6666666666666667"