所以,是的,有没有办法像
那样[1, 2].each { puts _ }
而不是
[1, 2].each { |i| puts i }
也许:
{ a: 1, b: 2 }.each { puts _1, _2 }
显然这些都是简单的例子,但用这些编写脚本要容易得多。
对于像def _1; ...; end
这样的人来说,现在可能更容易扩展,但我没有办法让当前对象传递给该块。
答案 0 :(得分:4)
这是我唯一能找到的东西
puts_m = method(:puts)
[1, 2, 3].each(&puts_m)
1
2
3
=> [1, 2, 3]
答案 1 :(得分:0)
除了Ursus回答!
对于这种情况,你可以:
puts [1, 2].join "\n"
你也可以玩monkeypatching:
class Array
def putseach
each { |i| puts i }
end
end
并用
调用它[1, 2].putseach
可能不建议在更大的代码库中使用,但在某些情况下,这是一种有趣的方法来获得更清晰的代码。