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 !!!