Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
interception method_added for blocks
robertj
12/12/2005 5:33:00 PM
hi,
is it possible to somehow intercept method_added
for defs defined within a block?
y = Proc.new {
def x
end
}
for example in the code above who gets notfied of the existance of x?
ciao robertj
2 Answers
Trans
12/12/2005 6:28:00 PM
0
class << Proc
alias_method :_new, :new
def new( *args, &blk )
puts "Intercept..."
_new( *args, &blk )
end
end
You can't do it with method_added becuase it is a *post* hook --the
method has already been created.
Trans
12/12/2005 6:36:00 PM
0
Ah misread that a bit. The code won't help, so ignore that.
Actual answer: It depends on where you evaluate the code.
irb(main):001:0> class A
irb(main):002:1> def self.method_added( sym )
irb(main):003:2> p "A##{sym}"
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> class B
irb(main):007:1> def self.method_added( sym )
irb(main):008:2> p "B##{sym}"
irb(main):009:2> end
irb(main):010:1> end
=> nil
irb(main):011:0> d = Proc.new{ def x; end }
=> #<Proc:0xb79d553c@(irb):11>
irb(main):012:0> A.class_eval &d
"A#x"
=> nil
irb(main):013:0> B.class_eval &d
"B#x"
=> nil
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
interception method_added for blocks
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password