在Ruby中按名称传递函数

Nic*_*ner 5 ruby functional-programming

如何在Ruby中按名称传递函数?(我只使用Ruby几个小时,所以我还在搞清楚.)

nums = [1, 2, 3, 4]

# This works, but is more verbose than I'd like    
nums.each do |i|
  puts i
end

# In JS, I could just do something like:
# nums.forEach(console.log)

# In F#, it would be something like:
# List.iter nums (printf "%A")

# In Ruby, I wish I could do something like:
nums.each puts
Run Code Online (Sandbox Code Playgroud)

可以在Ruby中简洁地完成吗?我可以通过名称而不是使用块来引用函数吗?

投票结束的人:你能解释为什么这不是一个真正的问题吗?

Chr*_*ich 6

您可以执行以下操作:

nums = [1, 2, 3, 4]
nums.each(&method(:puts))
Run Code Online (Sandbox Code Playgroud)

本文很好地解释了Ruby中procs,blocks和lambdas之间的区别.