2011-02-07 15 views
5

Bir float dizisini parametre olarak alan clojure'dan bir java işlevi çağırmam gerekiyor. Bunu clojure'da nasıl yapardım? Clojure - java interop - Float dizisi nasıl geçilir>

Ben

(classname/function [0.1f 0.2f])

çalıştı - ama bu işe yaramaz. Açıkçası konu parametre dizisi ile. Sınıftaki diğer işlevleri problemsiz olarak arayabilirim, bir dizi parametre olarak almamalarını sağlarım.

Herhangi bir öneriniz var mı? Eğer

cevap

4

float-array deneyin

ederiz. dökümantasyon Gönderen:

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

Teşekkür ederiz. Bu benim için çalışmadı. Daha spesifik olmak gerekirse, bir opengl işlevini çağırmaya çalışıyorum. Java'da, kod şu şekilde olur: GLfloat blackAmbientLight [] = {0.0, 0.0, 0.0}; glLightfv (GL_LIGHT0, GL_AMBIENT, blackAmbientLight); Bununla birlikte, clojure :-( 'dan çağrı yapamıyorum (float-array [0 0 0]) parametreyi geçtiğimde ihtiyacım olanı üretmiyor –

7

float-array ait kısayol yapı için ihtiyacın olanı vermeyebilir böylece fonksiyon GLfloats dizisi istiyor gibi görünüyor. Daha genel olsa diziye

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

uzun soluklu edilir: Genel dizisi oluşturucu işlevi (into-array type aseq)

yüzden gibi bir şey olabilir olduğunu.