के साथ इंटरफेसिंग करते समय स्पष्ट रूप से क्लोजर में कैसे डाला जाए, क्लोजर से वेका का उपयोग करने की कोशिश में, मैं क्लोजर की जावा इंटरऑप सुविधाओं का उपयोग करके वेका विकी से क्लोजर में this howto guide को परिवर्तित करने की कोशिश कर रहा हूं।जावा
यह अब तक अच्छी तरह से काम किया है एक मामले में, जहां clojure प्रतिबिंब तंत्र को लागू करने की सही विधि को खोजने के लिए नहीं कर पा रहे छोड़कर, - मेरे पास है:
(def c-model (doto (NaiveBayes.) (.buildClassifier is-training-set)))
बाद में इस से सक्रिय किया जाएगा Evaluation
वर्ग के .evaluateModel
विधि:
(.evaluateModel e-test c-model is-testing-set)
जहां e-test
प्रकार weka.classifiers.Evaluation
की है और, their api documentation के अनुसार विधि प्रकारके दो पैरामीटर लेता हैऔर Instances
क्या मैं clojure से मिलता है, हालांकि IllegalArgumentException No matching method found: evaluateModel for class weka.classifiers.Evaluation clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:53)
है - मुझे लगता है कि है कि इस वजह से c-model
प्रकार NaiveBayes
की वास्तव में है, हालांकि यह भी एक Classifier
होना चाहिए - जो भी हो, instance?
के अनुसार।
मैंने cast
के साथ कास्टिंग करने की कोशिश की, और जो भी मैं समझता हूं उससे क्लोजर में वास्तविक कलाकारों की तुलना में यह एक प्रकार का दावा (और बिना किसी समस्या के गुजरता है) से अधिक है। जावा इंटरऑप विधि कॉल में किस प्रकार कास्ट करना है, स्पष्ट रूप से क्लोजर कहने का एक और तरीका है? (ध्यान दें कि मूल गाइड मैं ऊपर लिंक भी Classifier
करने के लिए NaiveBayes
से एक स्पष्ट डाली उपयोग करता है)
पूर्ण यहाँ कोड: /http://paste.lisp.org/display/129250
मैं सोच रहा था कि एक सेकंड के लिए varargs के साथ क्या करना है, लेकिन उस जवाब में नहीं आया - धन्यवाद! –