Это имеет непосредственное отношение к ковариантности, например, универсальные типы рассматривают как параметры, и если параметры не разрешают правильно к более определенному типу тогда операционные сбои. Импликация такого - то, что Вы действительно не можете бросить к более общему типу как объект. И, как указано Королем, Объект списка не преобразует каждый объект для Вас.
Вы могли бы хотеть попробовать и следующие код вместо этого:
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 без проблем.
Дано:
val a = Array[Array[Int]]
вы можете попробовать:
for(inner <- a) yield {
for (elem <- inner) yield {
elem
}
}
Более глубокий вопрос: ПОЧЕМУ вы хотели бы это сделать с целыми числами? Весь смысл использования неизменяемых типов состоит в том, чтобы избежать именно такой конструкции.
Если у вас есть более общий Array [Array [T]]
, то ваша главная задача - как клонировать экземпляр T
, а не как глубоко клонировать массив.