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 回答