Feature #18690
Updated by sawa (Tsuyoshi Sawada) over 2 years ago
`Kernel#then` passes the receiver to the block as its first positional block parameter. argument. ```ruby 1.5.then{|x| Math.atan(x)} ``` I would like to propose to let `then` take arguments, which would be passed to the block as the other block parameters. arguments. ```ruby 3.then(4){|x, y| Math.hypot(x, y)} ``` There are two uses. First, to separate bulky or repeated parameters from the routine. Instead of writing: ```ruby honyarara.then{|x| foo(x) bar(fugafugafuga) baz(hogehogehoge) qux(x, fugafugafuga, hogehogehoge) } ``` we can then write: ```ruby honyarara.then(fugafugafuga, hogehogehoge){|x, y, z| foo(x) bar(y) baz(x) qux(x, y, z) } ``` Second, to use a proc with multiple parameters when, for some reason, you do not want to define a method to do it: ```ruby p = ->(x, y, z){ foo(x) bar(y) baz(x) qux(x, y, z) } honyarara.then(fugafugafuga, hogehogehoge, &p) ```