2013-10-25 10 views
6

मैं एक तूफान सर्वर पर एक टोपोलॉजी तैनात करने के लिए कोशिश कर रहा हूँ और यह निम्नलिखित मुझे बता रहता है:अनबाउंड फ़ंक्शन - उन्हें कैसे बाध्य करें?

java.lang.RuntimeException: java.lang.IllegalStateException: Attempting to call unbound fn: #'storm-nblabla/operation-bolt__ at backtype.storm.clojure.ClojureBolt.prepare(ClojureBolt.java:60) a 

तो मैं मैं एक समारोह है कि मैं में उपयोग कर रहा हूँ समारोह तैयार बाध्य करने के लिए है लगता है। तो मेरा सवाल यह है कि आप आमतौर पर क्लोजर में कार्यों को कैसे बांधते हैं?

सादर,

होरेस

+0

कोड को देखे बिना जानना मुश्किल है। – Chiron

उत्तर

11

clojure में, एक मूल्य के आम तौर पर दो तरीकों में से एक में ही है:

  • स्थानीय लोगों, एक नाम स्थान क्वालीफायर के बिना (आमतौर पर एक let बयान में या fn/loop तर्क)
    यह उन मानों के लिए है जिन्हें ब्लॉक के दायरे से बाहर संदर्भित नहीं किया गया है (सिवाय इसके कि उन्हें एक func के लिए तर्क के रूप में प्रदान किया गया है ब्लॉक के अंदर या ब्लॉक के वापसी मूल्य में टयन)।

  • वार्स, नाम स्थान गुंजाइश के साथ, आम तौर पर def का उपयोग कर (या defn की तरह एक माध्यमिक मैक्रो)
    यह मान जो नाम स्थान गुंजाइश है, जो भी आप नाम स्थान का उपयोग कर सकते एक्सेस किया जा सकेगा पर सुलभ होना चाहिए के लिए है। इस कोड को वर मौजूद है में

    user> (declare foo) 
    #'user/foo 
    user> (foo) 
    IllegalStateException Attempting to call unbound fn: #'user/foo clojure.lang.Var$Unbound.throwArity (Var.java:43) 
    

    :

त्रुटि declare का उपयोग कर एक वर बनाने के लिए, और फिर एक सच्चे परिभाषा प्रदान किए बिना यह बुला के कारण होता है (एक अबाध fn कॉल करने के लिए कोशिश कर रहा है) (declare ने इसे बनाया), लेकिन कोई मूल्य असाइन नहीं किया गया है।

user> (defn foo [] "OK") 
#'user/foo 
user> (foo) 
"OK" 
user> 

कहीं, अपने कोड का कुछ हिस्सा या लाइब्रेरी का उपयोग कर रहे एक वर की घोषणा की है की कोड है, जो एक प्रतिदेय मूल्य के लिए बाध्य किया जाना चाहिए: तो तुम बंधन, एक वर बाध्यकारी सीरियल में की जरूरत है , लेकिन ठीक से शुरू नहीं किया गया है। क्या लाइब्रेरी में init फ़ंक्शन है जिसे आपने कुछ नहीं कहा है? हो सकता है कि परिभाषा दिखाई देने से पहले आपको एक नामस्थान की आवश्यकता हो?

संबंधित मुद्दे