के "प्रकार" समारोह के लिए कुछ कॉल की कोशिश करते हैं:फ़ंक्शन किस प्रकार का है?
user=> (type 10)
java.lang.Integer
user=> (type 10.0)
java.lang.Double
user=> (type :keyword?)
clojure.lang.Keyword
और अब एक गुमनाम समारोह के साथ:
user=> (type #(str "wonder" "what" "this" "is"))
user$eval7$fn__8
ए) इसका क्या मतलब "उपयोगकर्ता $ eval7 $ fn__8" करता है? बी) और किस प्रकार का फ़ंक्शन है?
"प्रकार" के लिए स्रोत है:
user=> (source type)
(defn type
"Returns the :type metadata of x, or its Class if none"
{:added "1.0"}
[x]
(or (:type (meta x)) (class x)))
nil
तो एक समारोह मेटा डेटा के एक विशिष्ट भाग एक वर्ग
एक गुमनाम समारोह पैदावार नाडा के मेटा जाँच है या होने की जरूरत है:
user=> (defn woot [] (str "wonder" "what" "this" "is"))
#'user/woot
user=> (meta woot)
{:ns #<Namespace user>, :name woot}
:
user=> (meta #(str "wonder" "what" "this" "is"))
nil
एक अलग दृष्टिकोण की कोशिश कर रहा
सी) लगता है कि कुछ मेटा है लेकिन मुझे लगा कि यह "woot" प्रतीक का मेटा है, है ना?
के बारे में "या" दूसरी छमाही क्या:
user=> (class #(str "wonder" "what" "this" "is"))
user$eval31$fn__32
user=> (class woot)
user$woot
ये क्या हैं: "उपयोगकर्ता $ eval31 $ fn__32" और "उपयोगकर्ता $ woot" और वे कहाँ से आते हैं?
"वर्ग" समारोह पैदावार बाहर की जाँच:
user=> (source class)
(defn ^Class class
"Returns the Class of x"
{:added "1.0"}
[^Object x] (if (nil? x) x (. x (getClass))))
nil
और आगे की जांच की पैदावार:
user=> (.getClass #(str "wonder" "what" "this" "is"))
user$eval38$fn__39
user=> (.getClass woot)
user$woot
मैं इसे नहीं मिलता है। डी) क्या यह हैशकोड है: eval38 $ fn__39? ई) क्या यह एक प्रतीक है: woot?
एफ) फ़ंक्शन में कोई प्रकार क्यों नहीं है? क्या यह आईएफएन या कुछ नहीं होना चाहिए?
स्पष्ट रूप से, प्रत्येक कार्य अपने स्वयं के प्रकार को परिभाषित करता है (यह कम से कम बंद होने के लिए कुछ हद तक व्यवहार्य है)। आप जो देख रहे हैं वह उस फ़ंक्शन के लिए स्वचालित रूप से परिभाषित प्रकार है। क्लोजर फू की कमी, मैं इसे एक टिप्पणी के रूप में छोड़ दूंगा। –