我正在學習clojure,並有一個非常基本的問題:鑑於clojure有類型推斷,你怎麼知道什麼類是推斷?檢查clojure中的東西類嗎?
例如,這些每一個都將導致不同的數據類型:
(2)
(/ 2 3)
(/ 2.0 3)
是否有某種class
功能,將返回的數據類型?另外,是否有一種正常的方式來將某些東西轉換爲特定的類型?所以在上面的第二個例子中,如果我想要結果是浮動的,我該怎麼辦?
我正在學習clojure,並有一個非常基本的問題:鑑於clojure有類型推斷,你怎麼知道什麼類是推斷?檢查clojure中的東西類嗎?
例如,這些每一個都將導致不同的數據類型:
(2)
(/ 2 3)
(/ 2.0 3)
是否有某種class
功能,將返回的數據類型?另外,是否有一種正常的方式來將某些東西轉換爲特定的類型?所以在上面的第二個例子中,如果我想要結果是浮動的,我該怎麼辦?
在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
同樣,你可能並不需要,因爲投了以下工作:
user> (Double/toString (/ 2 3))
"0.6666666666666667"
然而,這確實太:
user> (str (/ 2 3))
"0.6666666666666667"
黨! 'type'不在Clojure Cheat Sheet()上,所以我沒有找到它:( –
2010-01-06 11:47:29
還有'class'''type''基本上檢查元數據(如果有的話) )首先爲:type鍵,然後使用'fallback'類。 – kotarak 2010-01-06 12:33:32
非常真實!它也非常有用。 – aatifh 2010-01-06 12:36:37