有没有办法拥有类似"C"/"C++"的多维变量,即定义多维括号的getter/setter方法?(不诉诸哈希(
不能定义吗
def [][]=(a, b, value)
...
end
这样
a = Integer.new
a[1][1] = 2
?
哈希不应补偿正确的表。我想我记得一旦在堆栈溢出上显示如何将多维括号定义为方法。然而,我找不到线程,如果它存在的话。
由于 C++ 和 Ruby 有着如此根本的不同,我不确定这个问题
有没有办法在 Ruby 中拥有类似"C"/"C++"的多维变量?
甚至有道理。
与其努力模仿 Ruby 中的C++特性,不如问问自己想要解决的真正问题是什么,以及如何使用常见的 Ruby 特性来实现它。
当你在 Ruby 中看到[][]
"运算符"时,大多数时候实际上是返回数组或哈希的[]
运算符(正如 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"