बस एक त्वरित सवाल मान जबकि Clojure को देख ....Clojure स्ट्रिंग वापसी
को देखते हुए निम्नलिखित आरईपीएल सत्र:
Clojure 1.2.0
user=> "bar"
"bar"
user=> (print "bar")
barnil
user=> (defn foo [] ("bar"))
#'user/foo
user=> (foo)
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn (NO_SOURCE_FILE:0)
user=> (print foo)
#<user$foo [email protected]>nil
user=> (print (foo))
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn(NO_SOURCE_FILE:0)
क्यों स्ट्रिंग "बार" प्रिंट समारोह द्वारा नहीं दिखाया है ? ऐसा लगता है कि पाठक फ़ू के वापसी मूल्य को हल करने का प्रयास करता है (जो एक स्ट्रिंग प्रतीत होता है) फ़ंक्शन के रूप में? फू को कैसे परिभाषित किया जाना चाहिए कि प्रिंट कमांडलाइन को स्ट्रिंग लिख देगा?
:-) मैं की जड़ में एक * CWD * विधि को परिभाषित करने के साथ मुद्दों था मेरी परियोजना। कॉलिंग '(str cwd "src/foo.txt")' mistook * cwd * को प्रथम श्रेणी के फ़ंक्शन ऑब्जेक्ट के रूप में, '[email protected]/foo.txt "पर लौटा रहा है। इसे '(str (cwd) "src/foo.txt" में बदलना "अपेक्षित रूप से कार्य करता है। अब मैं समझता हूं कि एक अनिवार्य भाषा (पायथन) में, यह 'लेन' कथन और ऑपरेशन 'लेन() 'के बीच का अंतर है। – Droogans