Rubyでは、シンボルは次のようなProcに簡単に変換できます。
%{john terry fiona}.map(&:capitalize) # -> %{John Terry Fiona}
次のコードを短縮するために、メソッドをProcに渡す方法はありますか?
["john", "terry", "fiona"].each do |n|
assert n.valid_encoding?
end
ありがとう。
Rubyでは、シンボルは次のようなProcに簡単に変換できます。
%{john terry fiona}.map(&:capitalize) # -> %{John Terry Fiona}
次のコードを短縮するために、メソッドをProcに渡す方法はありますか?
["john", "terry", "fiona"].each do |n|
assert n.valid_encoding?
end
ありがとう。
%w{john terry fiona}.map(&:valid_encoding?).each(&method(:assert))
同じことへの非正統的なアプローチ:
Compose =
lambda do |*xs|
ph, *ps = xs.map(&:to_proc)
lambda do |*ys|
r = ph[*ys]
ps.each do |p|
r = p[r]
end
r
end
end
["john", "terry", "fiona"].each(&Compose[:valid_encoding?, method(:assert)])