Dan*_*erg 3 ruby parameters arguments default
说我有一个ruby方法:
def blah(foo=17)
...
end
Run Code Online (Sandbox Code Playgroud)
在代码中我想用一个特定的参数"blah(a)"来调用blah,或者使用它的默认参数"blah()"调用blah.如果没有指定方法名两次,有没有办法做到这一点?我试图避免:
if a.nil?
blah()
else
blah(a)
end
Run Code Online (Sandbox Code Playgroud)
因为它使代码看起来比它复杂.我能想出的最好(没有测试)是:
args=[]
args << a unless a.nil?
a.send :blah, args
Run Code Online (Sandbox Code Playgroud)
我只是尝试了几种方法,并没有找到任何方法,但如果你发现自己做了很多,我想知道使用默认参数的好处.试试这个:
def blah(foo=nil)
foo ||= 17
puts foo
end
blah()
a = nil
blah(a)
a = 20
blah(a)
Run Code Online (Sandbox Code Playgroud)
这将输出:
17
17
20
Run Code Online (Sandbox Code Playgroud)