2011-02-04 95 views

回答

3

也许我不明白的问题,但

>> class Hash 
.. alias :foobar :[]= 
..  end 
=> nil 
>> h = Hash.new 
=> {} 
>> h.foobar(:a, 1) 
=> 1 
>> h 
=> {:a=>1} 
+0

谢谢你的伎俩。我没有想过把它作为一个符号:) – 2011-02-04 10:53:17

+0

冒号方括号表示法有什么作用? :[] = <---那。 – Danny 2012-07-29 22:22:30

3

别名接受的符号作为参数,因此,这里是你想要做什么的例子:

class Toto 
    def initialize 
    @t = {} 
    end 

    def []=(k,v) 
    @t[k] = v 
    end 

    alias assign :[]= 
end 

t = Toto.new 

t[1] = 5 
t.assign(3, 4) 

puts t.inspect 

显示:#<Toto:0x29b8318 @t={1=>5, 3=>4}>

另外,你得到的别名参数顺序错了,它是alias new_name old_name