Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何使用.fill方法创建新对象?_Arrays_Ruby_Multidimensional Array - Fatal编程技术网

Arrays 如何使用.fill方法创建新对象?

Arrays 如何使用.fill方法创建新对象?,arrays,ruby,multidimensional-array,Arrays,Ruby,Multidimensional Array,具体来说,我想知道为什么当我使用.fill创建一个包含多个子数组的新数组时,使用.fill创建的子数组是同一个对象 array = Array.new.fill([], 0..8) subsquare[0].object_id => 7220340 subsquare[1].object_id => 7220340 如何创建这些子数组,同时确保每个子数组都是其自己的对象?如果查看数组,可以找到此问题的原因。新建: 请注意,第二个参数使用对的引用填充数组 同一个物体。因此,建议仅

具体来说,我想知道为什么当我使用.fill创建一个包含多个子数组的新数组时,使用.fill创建的子数组是同一个对象

array = Array.new.fill([], 0..8)

subsquare[0].object_id => 7220340
subsquare[1].object_id => 7220340

如何创建这些子数组,同时确保每个子数组都是其自己的对象?

如果查看数组,可以找到此问题的原因。新建:

请注意,第二个参数使用对的引用填充数组 同一个物体。因此,建议仅在以下情况下使用: 需要使用本机不可变的对象(例如 符号,数字,对还是错

要创建具有单独对象的阵列,可以传递一个块 相反此方法可以安全地用于可变对象,例如 散列、字符串或其他数组

文档中指定的解决方法是:

array = Array.new(8) { [] }