Hi all,
This might sound a bit wierd but I would like to know if
there are any other ways of calling a method without using . operator or
calling send().
Is it possible using blocks or something else?
Hi all,
This might sound a bit wierd but I would like to know if
there are any other ways of calling a method without using . operator or
calling send().
Is it possible using blocks or something else?
ruby rails wrote:
This might sound a bit wierd but I would like to know if
there are any other ways of calling a method without using . operator or
calling send().
(or send presumably). How about this one?
def foo
puts “hello”
end
m = method(:foo)
m[]
What are you trying to achieve anyway?
2009/1/19 ruby rails [email protected]
Hi all,
This might sound a bit wierd but I would like to know if
there are any other ways of calling a method without using . operator or
calling send().
You could write a DSL that would make it look like you weren’t doing dot
or
send() but at some level you’re going have to use one of those, or maybe
instance_eval. e.g.:
objects = {
:foo => foo_object
}
def method_missing(name, method)
objects[name.to_sym].send(method)
end
foo_object :bar_method
It might be helpful if we knew the problem you’re trying to solve – can
you
give us any more info?
foo_object :bar_method
Correction: final line should have been
foo :bar_method
On 19.01.2009 16:45, ruby rails wrote:
James C. wrote:
2009/1/19 ruby rails [email protected]
It might be helpful if we knew the problem you’re trying to solve – can
you
give us any more info?
I was asked this question by one of y interviewer…May be he is testing
my meta-programming skills…
No meta programming needed
irb(main):001:0> “foo”.instance_eval { puts length }
3
=> nil
Cheers
robert
James C. wrote:
2009/1/19 ruby rails [email protected]
It might be helpful if we knew the problem you’re trying to solve – can
you
give us any more info?
I was asked this question by one of y interviewer…May be he is testing
my meta-programming skills…
ruby rails wrote:
Hi all,
This might sound a bit wierd but I would like to know if
there are any other ways of calling a method without using . operator or
calling send().Is it possible using blocks or something else?
Look Ma, no dots!
class Foo
def hello
puts “hello!”
end
end
eval “Foo\056new\056hello”
#=> hello!
I will send my contact info via email so that I may receive my prize.
Robert K. wrote:
No meta programming needed
irb(main):001:0> “foo”.instance_eval { puts length }
Foul … you used a dot!
On 19.01.2009 21:46, Brian C. wrote:
Robert K. wrote:
No meta programming needed
irb(main):001:0> “foo”.instance_eval { puts length }
Foul … you used a dot!
Uh, oh! I thought nobody would notice. Cough cough.
robert
One more way uses colons:
a = [1,2]
a::length # => 2
a::push(3) # => [1,2,3]
a::length # => 3
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