我很乐意通过一个较短的表达式访问多维哈希数组的任何元素
h = {a: {b: 'c'}}
# default way
p h[:a][:b] # => "c"
# a nicer way
p h[:a,:b] # => "c"
# nice assignment
h[:a,:b] = 1
p h # => {:a=>{:b=>1}}
我意识到,通过这种方式可以消除将哈希键作为数组的可能性。
{[:a,:b] => "c"}
因为这是非常罕见的情况,我宁愿减少我的表达式中[]的数量。
如何做到这一点?
更新
好吧,我不清楚。问题是我已经试着定制了
[]
[]=
方法,但失败了。你能告诉我如何实现这样的功能吗?
多维数组
如果您正在寻找类似的数组,请查看
narray
宝石
http://narray.rubyforge.org/
>> a = NArray.int(5,5)
=> NArrayint5,5:
[ [ 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0 ] ]
>> a[1,2]
=> 0
>> a[1,2]=1
=> 1
>> a
=> NArrayint5,5:
[ [ 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0 ],
[ 0, 1, 0, 0, 0 ],
[ 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0 ] ]
>> a[1,0..4]=1
=> 1
>> a
=> NArrayint5,5:
[ [ 0, 1, 0, 0, 0 ],
[ 0, 1, 0, 0, 0 ],
[ 0, 1, 0, 0, 0 ],
[ 0, 1, 0, 0, 0 ],
[ 0, 1, 0, 0, 0 ] ]