Проверьте класс что-то в clojure?
Я изучаю clojure и задаю очень простой вопрос: учитывая, что clojure имеет тип вывода, как вы можете определить, какой класс был выведен?
Например, каждый результат будет иметь разные типы данных:
(2)
(/ 2 3)
(/ 2.0 3)
Есть ли какая-то функция class
, которая вернет тип данных? Кроме того, есть ли обычный способ лить что-то конкретным типом? Итак, во втором примере выше, что бы я сделал, если бы я хотел, чтобы результат был плавающим?
Ответы
Ответ 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"