Hello.
How do I perform something like this?
It’s the @echo variable inside the block I’m talking about, how do I
gain “access” to it?
Sincerely,
phora.
Hello.
How do I perform something like this?
It’s the @echo variable inside the block I’m talking about, how do I
gain “access” to it?
Sincerely,
phora.
2010/1/24 Mikkel K. [email protected]:
How do I perform something like this?
gist:6a2aa7e86cad8717541f · GitHubIt’s the @echo variable inside the block I’m talking about, how do I
gain “access” to it?
This is not a class variable. It is an instance variable of @listen.
What kind of access do you need?
Kind regards
robert
Ruby doesn’t scope quite like that normally, but you can do it using
instance_eval and define_method:
def initialize(server1, server2)
@echo = echo = IRC::Client.new(*server1)
@listen = IRC::Client.new(*server2)
@echo.instance_eval do
define_method :message_received do |nick, channel, message, *args|
if channel == “#Pre”
echo.puts(“PRIVMSG #{echo.channel} :#{message}”)
end
end
end
end
instance_eval has some quirks, and define_method methods are never as
fast as normal methods (since they have full block dispatch
semantics), but this should do what you need.
Thanks to both of you, I’ve used both examples for several tasks.
2010/1/25 Charles Oliver N. [email protected]:
end
end
end
endinstance_eval has some quirks, and define_method methods are never as
fast as normal methods (since they have full block dispatch
semantics), but this should do what you need.
Unlikely, since the method was defined on @listen and not @echo.
This is probably a better solution:
def initialize(server1, server2)
@echo = IRC::Client.new(*server1)
@listen = IRC::Client.new(*server2)
class <<@listen
attr_accessor :echo
end
@listen.echo = @echo
def @listen.message_received(nick, channel, message, *args)
if channel == “#Pre”
echo.puts(“PRIVMSG #{echo.channel} :#{message}”)
end
end
end
Kind regards
robert
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs