ruby中的别名def [] =(key,value)方法

时间:2011-02-04 10:43:37

标签: ruby

通常要覆盖一个方法,我只想对它进行别名:

 alias original_method_name method_name

我现在遇到了一个看起来像这样的方法:

def []=(key, value)
end

而且我不知道如何为这一个添加别名。

2 个答案:

答案 0 :(得分:3)

也许我不明白这个问题,但是

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

答案 1 :(得分: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