Ruby多维getter / setter方法(类似于C ++)

时间:2019-04-29 11:21:37

标签: ruby

是否有一种方法可以使类似“ C” /“ C ++”的多维变量,即定义多维括号内的getter / setter方法? (不求助于哈希)

无法定义

def [][]=(a, b, value)
  ...
end

那样

a = Integer.new
a[1][1] = 2

哈希不能补偿适当的表。而且我想我还记得如何在堆栈溢出中显示如何将多维括号定义为方法。但是我找不到该线程(如果存在)。

1 个答案:

答案 0 :(得分:0)

由于C ++和Ruby根本不同,我不确定这个问题

  

有没有办法在Ruby中具有类似于“ C” /“ C ++”的多维变量?

甚至有意义。

您应该问自己,什么是真正的问题,以及如何使用 common 来实现,而不是尝试在Ruby中模仿C ++功能。 > Ruby功能。

当您在Ruby中看到[][]“ operator”时,实际上大多数情况下[]操作符返回一个数组或哈希值(如mu-is-too-short所指出的那样)已经)。

例如

$ irb
2.6.2 :001 > a = Array.new(3, "0")
 => ["0", "0", "0"] 
2.6.2 :002 > b = Array.new(3, a)
 => [["0", "0", "0"], ["0", "0", "0"], ["0", "0", "0"]] 
2.6.2 :003 > b[1][1]
 => "0"