Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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
Ruby 二维数组,如何创建修改原始数组的列数组_Ruby_Arrays - Fatal编程技术网

Ruby 二维数组,如何创建修改原始数组的列数组

Ruby 二维数组,如何创建修改原始数组的列数组,ruby,arrays,Ruby,Arrays,我有一个二维数组,我希望能够使用另一个数组,它引用原始数组的列。我可以用行来做,但我不知道如何用列来做 twodim = [[" "," "," "], [" "," "," "], [" "," "," "]] row1 = twodim[0] row1[0] = "X" col1 = << twodim[0][0] << twodim[1][0] << twodim[2][0] col1[2] = "X" => puts twodim #actu

我有一个二维数组,我希望能够使用另一个数组,它引用原始数组的列。我可以用行来做,但我不知道如何用列来做

twodim = [[" "," "," "], [" "," "," "], [" "," "," "]]
row1 = twodim[0]
row1[0] = "X"

col1 = << twodim[0][0] << twodim[1][0] << twodim[2][0]
col1[2] = "X"

=> puts twodim
#actual result
=> [["X", " ", " "], [" ", " ", " "], [" ", " ", " "]]
#desired result
=> [["X", " ", " "], [" ", " ", " "], ["X", " ", " "]]
使用

说明:

$> col1[1].object_id
# => 2161281980 
$> col1[1] = "X"
# => "X" 
$> col1[1].object_id # Different object_id !!!
# => 2161469100
$> col1[1].replace("X")
# => "X" 
$> col1[1].object_id
# => 2161469100 # Same object_id !!!
在您的示例中,当执行
col1[2]=“X”
时,您正在为对象
col1[2]
分配一个值为
“X”
的新变量,这意味着
col1[2]
现在正在存储新对象的引用
“X”
。但是,在执行
col1[2].replace(“X”)
时,方法
replace
正在更改col1引用的对象的内容

以下示例将澄清上述解释:

$> col1[1].object_id
# => 2161281980 
$> col1[1] = "X"
# => "X" 
$> col1[1].object_id # Different object_id !!!
# => 2161469100
$> col1[1].replace("X")
# => "X" 
$> col1[1].object_id
# => 2161469100 # Same object_id !!!

我还建议你阅读这篇文章:

谢谢,这很有帮助。
$> col1[1].object_id
# => 2161281980 
$> col1[1] = "X"
# => "X" 
$> col1[1].object_id # Different object_id !!!
# => 2161469100
$> col1[1].replace("X")
# => "X" 
$> col1[1].object_id
# => 2161469100 # Same object_id !!!