作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个带有可选参数的方法。我如何确定是否给出了 Argument?
我想出了以下解决方案。我问这个问题是因为我对其中任何一个都不完全满意。还有更好的吗?
nil
作为默认值def m(a= nil)
if a.nil?
...
end
end
这个的缺点是,无法确定是没有参数还是 nil
被给出。
NoArgument
作为默认值class NoArgument
end
def m(a= NoArgument.new)
if NoArgument === a
...
end
end
是否给定nil
是可以判断的,但是NoArgument
的实例也存在同样的问题。
def m(*a)
raise ArgumentError if m.size > 1
if m.size == 1
...
end
end
在这个变体中,总是可以决定是否给出了可选参数。然而,此方法的 Proc#arity
已从 1 更改为 -1(不正确,请参阅注释)。它仍然有一个缺点,那就是更难记录并且需要手动引发 ArgumentError。
最佳答案
Jorg W Mittag 拥有 following code snippet可以做你想做的事:
def foo(bar = (bar_set = true; :baz))
if bar_set
# optional argument was supplied
end
end
关于ruby - 如何确定是否在 ruby 方法中给出了可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8705389/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!