3

Rubyでは、シンボルは次のようなProcに簡単に変換できます。

%{john terry fiona}.map(&:capitalize)   # -> %{John Terry Fiona}

次のコードを短縮するために、メソッドをProcに渡す方法はありますか?

["john", "terry", "fiona"].each do |n|
  assert n.valid_encoding?
end

ありがとう。

4

2 に答える 2

5
%w{john terry fiona}.map(&:valid_encoding?).each(&method(:assert))
于 2012-10-02T08:48:14.167 に答える
2

同じことへの非正統的なアプローチ:

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)])
于 2012-10-02T14:07:24.707 に答える