Проверить класс чего-нибудь в clojure? - PullRequest
23 голосов
/ 06 января 2010

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

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

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

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

Ответы [ 2 ]

32 голосов
/ 06 января 2010

В библиотеке 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.

user> (float 10)
10.0
2 голосов
/ 11 января 2010

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

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

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

user> (str (/ 2 3))
"0.6666666666666667"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...