У меня есть двумерный массив в Ruby, который я хочу создать рабочий дубликат. Очевидно, я не могу этого сделать;
array=[[3,4],[5,9],[10,2],[11,3]]
temp_array=array
поскольку любые изменения, которые я делаю для temp_array, также будут переданы в массив, поскольку я просто скопировал идентификатор объекта. Я думал, что смогу обойти это, просто используя;
temp_array=array.dup
но это не работает, поскольку temp_array - это просто массив идентификаторов объектов, которые дублируются, поэтому я все же в конечном итоге модифицирую исходный массив (если я понимаю, что пошло не так, когда я это сделал). Решение, которое я нашел, состояло в следующем:
temp_array=[]
array.each{|sub| temp_array << sub.dup}
Это достигает того, чего я хочу, но, похоже, является неудобным способом решения моей проблемы.
Меня беспокоит, как это будет работать, если я не знаю, что будет содержать мой массив (например, если возможно, что некоторые части массива имеют 3-мерные размеры). Мне, возможно, придется протестировать класс каждого члена массива, чтобы увидеть, нужно ли его повторять, чтобы его дублировать. Не совсем невозможная задача, но мне кажется бесполезной. Это просто следствие того, что Ruby не имеет встроенной поддержки многомерных массивов или есть простая встроенная функция для этого, которую я пропустил?