2011-02-07 11 views
5

浮動小数点配列をパラメータとするclojureからjava関数を呼び出す必要があります。どうすればクロージャーでこれをやることができますか?Clojure - java interop - 浮動小数点配列を渡す方法>

私は

(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配列[0 0 0])は、パラメータを渡すときに必要なものを生成しません –

7

float-arrayのショートカットでビルドはあなたが必要なものを与えていないことがありので、その関数がGLfloatsの配列を望んでいるように見えます。一般的な配列ビルダ機能が (into-array type aseq)

あるので、それはのようなものに見えることがあります。配列に

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

を長くしかし、より一般的な息切れされます。

関連する問題