From: hanmac@... Date: 2016-09-15T17:09:55+00:00 Subject: [ruby-core:77287] [Ruby trunk Bug#12765] An [element] multiply an number, every element in the list would be modified after modifying only one of then. Issue #12765 has been updated by Hans Mackowiak. this is not much of a bug, your array has three times the same element object (same object id) you want: list = Array.new(3) { [1] } #=> [[1], [1], [1]] list[0][0] = -1 list #=> [[-1], [1], [1]] ---------------------------------------- Bug #12765: An [element] multiply an number, every element in the list would be modified after modifying only one of then. https://bugs.ruby-lang.org/issues/12765#change-60520 * Author: jieqi fan * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin14] * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- ` element = [1] list = [element.clone] * 3 p list #[[1], [1], [1]] list[0][0] = -1 # should be [[-1], [1], [1]] p list # [[-1], [-1], [-1]] ` The list initialized as [ [1], [1] ]. Then we assign the list[0][0], which is 1, as -1, and the list[1][0] is changed as -1 too. -- https://bugs.ruby-lang.org/ Unsubscribe: