argument forwarding

Ruby 3: 引数をforwardする...記法が第2パラメータでも使えるようになった(翻訳)|TechRacho by BPS株式会社 よりコードを引用しつつ紹介。

Ruby 2.7 から ... という記法が導入され、引数を forward することができるようになった。

def travel(...)
  by_road(...)
end

Ruby 3.0で、第1パラメータに加えて、第2パラメータ以降を...でforwardできるようになりました(#3190)。

def transform(a, ...)
  process(a, ...)
end

def process(a, *args, **kwargs, &block)
  if block
    block.call(args, kwargs)
  else
    [a, args, kwargs]
  end
end

block forwarding

Anonymous Block Forwarding in Ruby よりコードを引用:

Block を forward するためには、& を使って下記のように書いていた。

def perform(&blk)
  execute(&blk)
end

Ruby 3.1からは下記のように書くことができる。

def perform(&)
  execute(&)
end

& だけでブロックを forward することができるようになった。