2011-02-07 60 views
5

我需要調用從Clojure的Java函數,這需要一個float數組作爲參數。我如何在clojure中做到這一點?的Clojure - java的互操作 - 如何通過浮法陣列>

我試圖

(classname/function [0.1f 0.2f]) - 但這不工作。很明顯,問題出在參數數組上。我可以調用沒有問題類等功能,提供他們不採取數組作爲參數。

有什麼建議嗎?

謝謝

回答

4

嘗試float-array。從documetation:

user=> (doc float-array) 
------------------------- 
clojure.core/float-array 
([size-or-seq] [size init-val-or-seq]) 
    Creates an array of floats 
nil 
user=> (float-array [1 2 3]) 
#<float[] [[email protected]> 
user=> 
+0

謝謝。這對我不起作用。更具體地講,我試圖調用一個OpenGL函數。 在Java中,碼是這樣的: GLfloat blackAmbientLight [] = {0.0,0.0,0.0}; glLightfv(GL_LIGHT0,GL_AMBIENT,blackAmbientLight);但是,我無法從clojure調用相同的函數:-( (float-array [0 0 0])在傳遞參數時不會產生我需要的內容 – 2011-02-07 17:07:44

7

它看起來像函數希望GLfloats數組所以在float-array快捷的生成可能不會給你你所需要的。一般陣列設計器功能是 (into-array type aseq)

所以它可能看起來像:

(def my-array (into-array GLfloat [0.0 0.0 0.0])) 

到數組但更普遍的是長嗦。