【发布时间】:2012-04-16 20:29:00
【问题描述】:
我以前遇到过这种情况,但有件事告诉我,我通常处理它的方式不是最干净或最惯用的。
假设我有一个接受一个块的函数,该块又可以接受 1 或 2 个(比如说)参数。
def with_arguments(&block)
case block.arity
when 1
block.call("foo")
when 2
block.call("foo", "bar")
end
end
with_arguments do |x|
puts "Here's the argument I was given: #{x}"
end
with_arguments do |x, y|
puts "Here are the arguments I was given: #{x}, #{y}"
end
打开arity 似乎很老套。有没有更标准的 Ruby 方式来实现这种事情?
【问题讨论】:
-
你不能把方法分成
with_one_argument和with_two_arguments之类的东西吗(当然它们不会真的这么叫)?