我想在Ruby中调用一个具有可选参数的方法。
我尝试了一些方法,但是没有一个起作用。 您能帮我,我怎么称呼这种方法? 我以前从未使用过Ruby,因此请帮助我完善问题本身。我试图搜索该问题,但我认为我使用了错误的术语。
我读了这个:Ruby Methods and Optional parameters和这个:A method with an optional parameter,但是没有运气。
方法如下:
def method(param1, param2, options={})
...
if options["something"]
...
end
...
end
例如,我尝试拨打电话:
method("param1", "param2", :something => true)
通过我的尝试,代码已运行,但没有进入if
条件。
我想以这种方式调用此方法,以便运行if
语句中的代码。
答案 0 :(得分:2)
它不起作用,因为您发送的是symbol
(:something
)而不是string
键('something'
)。它们是不同的对象。
更改:
method("param1", "param2", :something => true)
到
method("param1", "param2", 'something' => true)
或通过if options[:something]
答案 1 :(得分:0)
以相同的参数类型调用您的方法,或者如果您希望能够传递符号或字符串键,则可以在您的方法中进行处理。
def foo(a,b, opt={})
if opt[:something] || opt['something']
puts 'something'
end
end
现在您可以使用字符串或符号键来调用它:
foo('a','b', 'something' => true )
#or
foo('a','b', something: true )