[英]Passing a method to Proc in Ruby
在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)])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.