Глубокая копия 2D массива в Scala?

Это имеет непосредственное отношение к ковариантности, например, универсальные типы рассматривают как параметры, и если параметры не разрешают правильно к более определенному типу тогда операционные сбои. Импликация такого - то, что Вы действительно не можете бросить к более общему типу как объект. И, как указано Королем, Объект списка не преобразует каждый объект для Вас.

Вы могли бы хотеть попробовать и следующие код вместо этого:

List<string> sl = new List<string>();
//populate sl
List<object> ol = new List<object>(sl);

или:

List<object> ol = new List<object>();
ol.AddRange(sl);

ol (теоретически) скопирует все содержание sl без проблем.

8
задан missingfaktor 7 January 2010 в 13:47
поделиться

1 ответ

Дано:

val a = Array[Array[Int]]

вы можете попробовать:

for(inner <- a) yield {
  for (elem <- inner) yield {
    elem
  }
}

Более глубокий вопрос: ПОЧЕМУ вы хотели бы это сделать с целыми числами? Весь смысл использования неизменяемых типов состоит в том, чтобы избежать именно такой конструкции.

Если у вас есть более общий Array [Array [T]] , то ваша главная задача - как клонировать экземпляр T , а не как глубоко клонировать массив.

0
ответ дан 5 December 2019 в 17:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: