prc.call(params,...) â obj
Instance Public methods
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). Note that prc.() invokes prc.call() with the parameters given. It's a syntax sugar to hide âcallâ.
For procs created using lambda
or ->()
an
error is generated if the wrong number of parameters are passed to a Proc with multiple parameters. For procs created
using Proc.new
or Kernel.proc
, 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 = lambda {|a,b| a} a_proc.call(1,2,3)
produces:
prog.rb:4:in `block in <main>': wrong number of arguments (3 for 2) (ArgumentError) from prog.rb:5:in `call' from prog.rb:5:in `<main>'
Please login to continue.