修改ruby中的二维字符数组

修改ruby中的二维字符数组,ruby,Ruby,在我的简单ruby代码中有这些代码,它将生成二维字符数组的ukuran x ukuran大小。当我想更改特定索引中的一个字符时,例如@cek[2][3],它将更改另一个索引中的字符,该索引后面有索引3,例如@cek[0][3],@cek[1][3] 在这种类型的数组中有什么我没有得到的吗??我是ruby新手,因为我知道它在另一种语言中会很好地工作。试试这个 def initialize(ukuran) @kata = Array.new(ukuran, '@') @olah =

在我的简单ruby代码中有这些代码,它将生成二维字符数组的ukuran x ukuran大小。当我想更改特定索引中的一个字符时,例如@cek[2][3],它将更改另一个索引中的字符,该索引后面有索引3,例如@cek[0][3],@cek[1][3]

在这种类型的数组中有什么我没有得到的吗??我是ruby新手,因为我知道它在另一种语言中会很好地工作。

试试这个

def initialize(ukuran)
    @kata = Array.new(ukuran, '@')
    @olah = @kata.join('')
    @cek = Array.new(ukuran, @olah)
end
试试这个

def initialize(ukuran)
    @kata = Array.new(ukuran, '@')
    @olah = @kata.join('')
    @cek = Array.new(ukuran, @olah)
end

您可以简化如下:

def initialize(ukuran)
    @kata = Array.new(ukuran, '@')
   ## @olah = @kata.join('')
    @cek = Array.new(ukuran, @kata)
 end

您可以简化如下:

def initialize(ukuran)
    @kata = Array.new(ukuran, '@')
   ## @olah = @kata.join('')
    @cek = Array.new(ukuran, @kata)
 end

这种方法没有区别。它提供了二维数组的ukuran×ukuran大小,我通过了@kata来代替@olahThis,这是行不通的。将方法重命名为init后,a=init3=>[[[@、@、@、]、@、@、@、@、@、@、@、@];a[1][1]=“猫”;a=>[[[@,cat,@],@,cat,@],@,cat,@]。这样没有区别。它提供了二维数组的ukuran×ukuran大小。我在这里用@kata代替@olahth。这行不通。将方法重命名为init后,a=init3=>[[[@、@、@、]、@、@、@、@、@、@、@、@];a[1][1]=“猫”;答=>[[@,猫,@],@,猫,@],@,猫,@]。。非常感谢…做得好这是一条路,但你应该简要解释一下为什么OP的方法没有按预期工作。@Stefan,是的,我应该,也会做,但必须等到早上。非常感谢…做得好这是一条路,但是你应该简单地解释一下为什么OP的方法没有像预期的那样有效。@Stefan,是的,我应该,也会这样做,但它必须等到早上。