2013-10-25 1 views
0

나는 double []을 매개 변수로 취하여 배열에 요소를 추가하는 Java 라이브러리와 인터페이스하고 있습니다. JavaConversions를 사용하여 Scala 가변 배열을 만들려고했지만이 변환을 관리 할 수 ​​없습니다. 어떤 아이디어?double []을 매개 변수로 사용하는 java 함수를 호출하십시오.

자바 :

public static double libraryFn(double[] numbers) { 
    ..... 
    numbers[0] = 1.0 
} 

스칼라 : 응답에 대한

def caller() { 
    // Does not work 
    val myNumbers = new Array[java.lang.Double](1) 
    libraryFn(myNumbers) 
} 

감사합니다. 라이브러리 소스를 자세히 살펴보면 라이브러리에 버그가 있으며 스칼라/자바 문제가 아닌 것으로 보입니다.

+0

작동하지 않는 코드를 게시 할 수 있습니까? – Reimeus

+1

배열을 사용하십시오. http://stackoverflow.com/questions/3940699/passing-java-array-to-scala – Ashalynd

+0

그 질문은 Java 배열로 scala 함수를 호출하는 것에 관한 것입니다. 더 중요한 것은 가변성에는 아무런 문제가 없다는 것입니다. 내가 가진 것은 double []을 취하고 배열에 숫자를 더하는 java 함수입니다 (out 매개 변수). – Parag

답변

5

내가 말하는이 가변 배열은 무엇일까? Array[Double] - 이고, Java는 double[]입니다.

+0

val myNumbers = Array [Double] (10); libraryFn (myNumbers)는 java.lang.ArrayIndexOutOfBoundsException을 발생시킵니다. – Parag

+1

@Parag 배열 크기에 문제가 있습니다. 유형과 관련이 없습니다. 또한,'Array [Double] (10)'은 단일 요소로서 10.0을 갖는 배열 크기 1을 생성합니다. _size_ 10의 배열을 원한다면,'new Array [Double] (10)'을하거나 Array.fill 또는 유사한 메소드를 사용해야합니다. –

관련 문제