псевдоним def [] = (ключ, значение) метод в ruby - PullRequest
2 голосов
/ 04 февраля 2011

Обычно для переопределения метода я бы просто присвоил ему псевдоним:

 alias original_method_name method_name

Теперь я столкнулся с методом, который выглядит следующим образом:

def []=(key, value)
end

И я не уверен, как этот псевдоним.

Ответы [ 2 ]

3 голосов
/ 04 февраля 2011

псевдоним принимает символы в качестве аргументов, поэтому вот пример того, что вы хотите сделать:

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

3 голосов
/ 04 февраля 2011

Может быть, я не понял вопроса, но

>> class Hash
..   alias :foobar :[]=
..     end
=> nil
>> h = Hash.new
=> {}
>> h.foobar(:a, 1)
=> 1
>> h
=> {:a=>1}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...