Bu basit scala kodunda birlikte çalışmayı deniyorum, ancak bazı sıkıntılarım var. Clojure içindeclojure/scala interop?
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)
}
}
, ben bu
(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
Ek olarak, i konsola herhangi bir çıktı alamadım yapmak! Bu kodu scala kullanarak sınama beklendiği gibi çalışır. Neler oluyor burada ve nasıl clojure scala kodunu kullanabilirim?
Teşekkürler! Decompiling hile yaptı - java kodu mükemmel, bu yüzden sonunda benim incremental yapı aracı ile bazı garip böcek oldu - yeniden başlatıldı ve beklendiği gibi çalıştı! btw, http://java.decompiler.free.fr/, harika bir araç kullandım. – josh
@josh: Ayrıca kaldırıldı özellikleri tüm gelişmiş Scala ile, Java 'yani scalać hala Scala sözdizimi bir "şekeri alınmış" sürümünü yazdırır -print' ama izomorf deneyebilirsiniz. Ayrıca 'javap', yani decompiles '.class' dosyaları gibi çalışan 'skalap' var. –
@josh: İşe yaradığını duyduğuma sevindim! –