2024-12-07 Ruby argument forwarding / block forwarding
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 することができるようになった。