2010-01-06 12 views
23

मैं क्लोजर सीख रहा हूं और एक बहुत ही बुनियादी सवाल है: यह देखते हुए कि क्लोजर में टाइप अनुमान है, आप कैसे बता सकते हैं कि किस वर्ग का अनुमान लगाया गया था?क्लोजर में कुछ की कक्षा की जांच करें?

उदाहरण के लिए, इन होगा विभिन्न डेटा प्रकार में प्रत्येक परिणाम:

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

वहाँ class समारोह के कुछ प्रकार है कि डेटा प्रकार वापस आ जाएगी है? साथ ही, क्या किसी विशिष्ट प्रकार के लिए कुछ कास्टिंग करने का एक सामान्य तरीका है? तो उपर्युक्त दूसरे उदाहरण में, यदि मैं परिणाम को फ़्लोट करना चाहता था तो मैं क्या करूँगा?

उत्तर

32

clojure.core लाइब्रेरी में फ़ंक्शन है।

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 
+1

डैंग! 'टाइप' क्लोजर चीट शीट () पर नहीं है, इसलिए मुझे यह नहीं मिला :( –

+7

' वर्ग 'भी है।' टाइप 'मूल रूप से मेटाडेटा (यदि कोई हो) पहले: टाइप कुंजी के लिए। फिर फॉलबैक 'क्लास' का उपयोग किया जाता है। – kotarak

+0

बहुत सच! यह भी बहुत उपयोगी है। – aatifh

2

इसी तरह आप ऐसा निम्न काम करता है कास्ट करने के लिए की जरूरत नहीं हो सकता है:

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

बहरहाल, यह भी करता है:

user> (str (/ 2 3)) 
"0.6666666666666667" 
संबंधित मुद्दे