🐡

[Feature #11446] `.map(&メソッド名, そのメソッドの引数)` のような形で引数を渡せるようにする提案

2024/03/21に公開

[Feature #11446] Possible work around for the requirement to supplying arguments like this: .map(&:method, <arguments>)

  • .map(&メソッド名, そのメソッドの引数) のような形で引数を渡せるようにする提案
  • このチケット自体は8年前になるんですが、最近コメントがされていて目に付きました
  • コメントだと以下のコードが提示されていたのでこういう事がやりたいんですかね?
module Enumerable
  def each_call(method, *args,  &) = each { _1.send method, *args, & }
  def map_call!(method, *args,  &) = map! { _1.send method, *args, & }
  # ...
end

# [1,2].map! &:+, 1
p [1,2].map_call! :+, 1

# [].each &:instance_eval do
%w[1 2].each_call :instance_eval do
  @v = 1
end
  • 今だと Numbered parameters を使ったほうがシンプルに書けますねー
p [1, 2].map { _1 + 1 }

%w[1 2].each do
  _1.instance_eval { @v = 1}
end
GitHubで編集を提案

Discussion