3

不确定是否有答案,但希望有人知道。我正在尝试获取 Ruby 1.8.7 中方法的可选参数的数量。Method#arity将不起作用,因为它返回-n-1,其中n是方法所需参数的数量。我需要的是可选参数的数量?例如

def foo(a,b,c=4,d=3)
  # ...
end

如何确定有2 个可选参数?请记住,这是Ruby 1.8.7

更新

道歉问题不清楚,在调用该方法之前我需要知道可选参数的数量。例如

method_def = self.instance_method(:foo)
# check for number of args
# call method if it meets some kind of criteria
4

2 回答 2

1

您可以定义您的方法,如:

def foo(a,b,*p)
  number_of_arguments = p.size

  c = p[0]
  d = p[1]      
end

更多信息可以“可选参数”下找到。

于 2012-09-10T10:53:42.943 回答
1

我不认为你可以。事实上,我认为这是{Proc, Method, UnboundMethod}#parameters在 Ruby 1.9 中引入的原因之一:

instance_method(:foo).parameters.count {|type,| type == :opt }
# => 2
于 2012-09-10T11:46:09.693 回答