Во-первых, Array
s изменчивы, и Я предполагаю, что вы намерены изменить элементыx
, вместо того чтобы заменить весь массив новым объектом массива, поэтому имеет смысл использовать val
вместо var
:
val x: Array[Seq[Any]]
Так как вы сказали, что ваши Seq
объекты неизменны, то вам необходимо убедиться, что вы установки значения в массиве. Это будет работать:
for (row <- x.indices)
x(row) = x(row).drop(1)
Это может быть написано красивее. Например, вы можете использовать transform
отобразить все значения вашего массива с помощью функции:
x.transform(_.drop(1))
Это обновления в месте, в отличие от map
, который оставит старый массив без изменений и возвращает новый массив.
EDIT: Я начал размышлять над тем, какой метод будет быстрее или эффективнее, но чем больше я думаю об этом, тем больше понимаю, что не уверен. Оба варианта должны иметь приемлемую производительность для большинства случаев использования.
приятный, очень всеобъемлющий и образовательный - спасибо за этот ответ –
в качестве последующего вопроса, если вы не возражаете - если 'transform (...)' изменяет элементы на месте, то как это работает для 'val'? Есть ли эквивалент для 'transform (...)', но для 1D массива или seq? –
, которая оставит старый массив без изменений и вернет новый массив, но новый массив и старый массив будут использовать одни и те же элементы, поэтому неизменяемые структуры данных так важны. –