2011-02-07 29 views
5

Muszę wywołać funkcję java z clojure, która pobiera tablicę float jako parametr. Jak mam to zrobić w clojure?Clojure - java interop - Jak przekazać tablicę float>

Próbowałem

(classname/function [0.1f 0.2f]) - ale to nie działa. Najwyraźniej problem dotyczy tablicy parametrów. Mogę wywoływać inne funkcje w klasie bez żadnych problemów, pod warunkiem, że nie przyjmują tablicy jako parametru.

Wszelkie sugestie?

Dziękuję

Odpowiedz

4

Spróbuj float-array. Z 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

Dziękuję. To nie działa dla mnie. Mówiąc dokładniej, próbuję wywołać funkcję opengl. W języku java kod wygląda następująco: GLfloat blackAmbientLight [] = {0.0, 0.0, 0.0}; glLightfv (GL_LIGHT0, GL_AMBIENT, blackAmbientLight); Jednak nie jestem w stanie wywołać tego samego z clojure :-( (Płyta-tablica [0 0 0]) nie generuje tego, czego potrzebuję, gdy przechodzę parametr –

7

wygląda na to, że funkcja chce tablicy GLfloats więc budować w skrótu float-array nie może dać ci to, czego potrzebujesz. ogólna funkcja array budowniczym jest (into-array type aseq)

tak może to wyglądać mniej więcej tak:

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

do tablicy jest już zdyszany choć bardziej ogólne.

Powiązane problemy