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))