K
Kevin Howe
Does Ruby have an equivalent of Python's __call__ method?
Does Ruby have an equivalent of Python's __call__ method?
Not sure what Python's __call__ does, but ...
meth.call(args, ...) => obj
meth[args, ...] => obj
Invokes the meth with the specified arguments, returning the method’s
return value.
m = 12.method("+")
m.call(3) #=> 15
m.call(20) #=> 32
---------
prc.call(params,...) => obj
prc[params,...] => obj
Invokes the block, setting the block’s parameters to the values in
params using something close to method calling semantics. Generates a
warning if multiple values are passed to a proc that expects just one
(previously this silently converted the parameters to an array).
For procs created using Kernel.proc, generates an error if the wrong
number of parameters are passed to a proc with multiple parameters.
For procs created using Proc.new, extra parameters are silently
discarded.
Returns the value of the last expression evaluated in the block. See
also Proc#yield.
a_proc = Proc.new {|a, *b| b.collect {|i| i*a }}
a_proc.call(9, 1, 2, 3) #=> [9, 18, 27]
a_proc[9, 1, 2, 3] #=> [9, 18, 27]
a_proc = Proc.new {|a,b| a}
a_proc.call(1,2,3)
produces:
prog.rb:5: wrong number of arguments (3 for 2) (ArgumentError)
from prog.rb:4:in `call'
from prog.rb:5
Does Ruby have an equivalent of Python's __call__ method?
Ruby.instances of that can pretend to be called with a function-like syntax?
Then the answer is no. Mainly because there is no "call" operator in
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.