如何在Ruby中将可选方法参数作为字符串传递

时间:2019-04-16 09:07:21

标签: ruby parameter-passing

我想在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语句中的代码。

2 个答案:

答案 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 )