🐈

[Feature #20657] ブロック引数の後に位置引数を渡せるようにする提案

2024/07/30に公開

[Feature #20657] Allow Enumerable#map(&:method) and #each accept additional parameters for method

  • ブロック引数の後に位置引数を渡せるようにする提案
  • 以下のようなブロック引数内で引数を渡すようなコードを
c = a.map { |item| item.ljust(10) }
# or
a.each { |item| item.some_method(arg1, arg2) }
  • 以下のように map(&シンボル, 位置引数) みたいな形で書きたいとのこと
c = a.map(&:ljust, 10)
# or
a.each(&:some_method, arg1, arg2)
  • 構文的には以下のチケットと同じ提案ですかね?
  • これに関して matz もコメントしているんですが『 ljust(10) に渡す引数は #map のメソッド呼び出しではなくて ljust のメソッドに属しているわけではない』とのこと
  • この手の機能提案は定期的に上がるんですが Numbered parameters は使いたくないんですかね〜〜〜
  • 変にトリッキーな構文を入れるよりも以下のように書いたほうがわかりやすいと思うんですが
c = a.map { _1.ljust(10) }
# or
a.each { _1.some_method(arg1, arg2) }
GitHubで編集を提案

Discussion