Скажем, у меня есть черта, Foo
и эта черта имеет общий тип Bar
так, что определение Foo будет выглядеть так же, какмногомерные рваный массив типа, который расширяет общий признак
trait Foo[C <: Bar] {
def updateState(state : C) : C;
}
, и у меня есть несколько классы action1
, action2
, action3
... action9
которые распространяются Foo
.
Теперь предположим, что я хочу явно инициализировать 2d-массив этих действий.
Я попытался
Array[Foo[Bar]](
Array(new action1, new action2),
Array(new action2, new action3)...
)
Array[Foo[Bar]](
Array[Foo[Bar]](new action1, new action2),
Array[Foo[Bar]](new action2, new action3)...
)
и большинство перестановок добавления [Foo[Bar]]
с баром [Foo]
без бара, делая основной массив Array[Array[Foo[Bar]]]
и т.д.
Я нашел решение проблемы используя
Array.ofDim[Foo[Bar]](size1, size2, size3)
и вручную инициализировать каждое измерение, но я хотел бы знать, есть ли какой-либо способ для расширения citly инициализировать массив 2d типа, который реализует общий признак ... да, я знаю, что для этого есть около 3 случаев использования (не совсем, но это не очень часто), так что ответ вроде: «Зачем вы это делаете?» или «Есть лучшие способы бла-бла-бла», это не повлияет на меня.
Не могли бы вы сделать 2-мерный оборванный массив '[Foo [Bar]]', используя это? Я не понимаю, как вы можете объяснить свое объяснение или код. –
@ theSilentOne Сообщение обновлено с выходом консоли. – Yuriy
Очень приятно, спасибо. –