I’m trying to monkeypatch the []= method in the Hash class:
Hash.class_eval do
def []_with_feature=(a,b)
puts ‘foo’
end
alias_method_chain :[]=, :feature
end
Something is wrong with the syntax, but I can’t figure out what. The
alias_method_chain method does look for punctuation (= in this case)
and expects it to be at the end of the aliased method ([]
_with_feature=), but I get the following syntax error:
So how in the world is this implemented? The []= method’s source code is
in
C. Other classes override it in a subclass, which works fine, but how
would
I go about implementing a method that works like the Hash class’ []=
method?
I’m not sure what you mean by “skipping alias_method_chain” this time.
If I
do
alias :[]_without_feature=, :[]=
alias :[]=, :[]_with_feature
I get the same error, as expected. So how would I go about changing this
method’s behavior?
On 6 Jan 2009, at 23:56, Harold A. Giménez Ch. wrote:
alias :[]_without_feature=, :[]=
alias :[]=, :[]_with_feature
I get the same error, as expected. So how would I go about changing
this method’s behavior?
just call it square_bracket_without feature or something like that.
the problem isn;t the method aliasing it’s defining a method called
[]_with_feature=