मैं इस सरल स्कैला कोड में इंटरऑप करने का प्रयास कर रहा हूं, लेकिन मुझे कुछ परेशानी हो रही है।क्लोजर/स्कैला इंटरऑप?
package indicators
class DoubleRingBuffer(val capacity:Int=1000) {
var elements = new Array[Double](capacity);
private var head=capacity-1
private var max=0
def size():Int = {
return max+1
}
def add(obj:Double):Double = {
head-=1
if (head<0) head=capacity-1
return set(max+1,obj)
}
def set(i:Int,obj:Double):Double = {
System.out.println("HI")
if (i>=capacity || i<0)
throw new IndexOutOfBoundsException(i+" out of bounds")
if (i>=max) max=i
var index = (head+i)%capacity
var prev = elements(index)
elements(index)=obj
return prev
}
def get(i:Int=0):Double = {
System.out.println("size is "+size())
if (i>=size() || i<0)
throw new IndexOutOfBoundsException(i+" out of bounds")
var index = (head+i)%capacity
return elements(index)
}
}
clojure में, मैं करता हूँ इस
(import 'indicators.DoubleRingBuffer)
(def b (DoubleRingBuffer. 100))
(pr (.size b)) ;;ERROR: No matching field found: size for class indicators.DoubleRingBuffer
(pr (.get b 33)) ;;returns 0: should throw an index out of bounds error!
(pr (.get b 100)) ;;throws index out of bounds error, as it should
इसके अलावा, मैं कंसोल के लिए किसी भी उत्पादन नहीं मिलता है! अपेक्षा के अनुसार स्कैला कार्यों का उपयोग करके इस कोड का परीक्षण करना। यहां क्या चल रहा है और मैं इसे कैसे ठीक कर सकता हूं ताकि क्लोजर स्कैला कोड का उपयोग कर सके?
धन्यवाद! डिकंपलिंग ने चाल बनाई - जावा कोड सही था, इसलिए अंत में यह मेरे बढ़ते निर्माण उपकरण के साथ कुछ अजीब बग था - फिर से शुरू हुआ और यह उम्मीद के अनुसार काम किया! बीटीडब्ल्यू, मैंने http://java.decompiler.free.fr/, महान उपकरण का उपयोग किया। – josh
@josh: आप 'स्केलैक -प्रिंट' भी आज़मा सकते हैं जो एक "विलुप्त" संस्करण मुद्रित करेगा जो अभी भी स्कैला सिंटैक्स है, लेकिन जावा के लिए आइसोमोर्फिक है, यानी सभी उन्नत स्कैला सुविधाओं को हटा दिया गया है। इसके अलावा, 'स्केलप' है जो 'जावप', यानी डीकंपाइल '.class' फ़ाइलों की तरह काम करता है। –
@josh: यह सुनकर खुशी हुई! –