ojAlog - ConvexSolver в Kotlin: 2d массив

Я пытаюсь реализовать некоторый пример, так как я планирую изучить ojAlgo в целях оптимизации. Мой вопрос действительно прост.

На Java я могу легко написать:

PrimitiveDenseStore Q = PrimitiveDenseStore.FACTORY.rows(new double[][]{{2.0,0.0}, {0.0, 2.0}});

Я пытался сделать то же самое, что и котлин

val Q: Array<DoubleArray> = arrayOf(DoubleArray(2.0, 0.0), DoubleArray(2.0, 0.0))
var tmpQ = PrimitiveDenseStore.FACTORY.rows(Q)

но кажется, что.rows нельзя назвать с аргументом, который я дал.

Может быть, я делаю что-то глупое, но я был бы признателен за помощь.

Спасибо.

1 ответ

Решение

DoubleArray Конструктор принимает размер массива в качестве первого аргумента, поэтому ваша конструкция недопустима. Аналог double[][] в котлине есть Array<DoubleArray>Это верно, но это должно быть построено так:

val Q: Array<DoubleArray> = arrayOf(doubleArrayOf(2.0, 0.0), doubleArrayOf(2.0, 0.0))

ОБНОВИТЬ:

Похоже rows функция занимает double[]... source как параметры, так и в Kotlin вы можете использовать оператор распространения:

val Q: Array<DoubleArray> = arrayOf(doubleArrayOf(2.0, 0.0), doubleArrayOf(2.0, 0.0))
var tmpQ = PrimitiveDenseStore.FACTORY.rows(*Q)

Не могу проверить это с PrimitiveDenseStore, но попробуйте это:

val Q: Array<Array<Double>> = arrayOf(arrayOf(2.0, 0.0), arrayOf(2.0, 0.0))
Другие вопросы по тегам