当前位置:  开发笔记 > 后端 > 正文

在一个采用多个可选参数的方法中,如何指定除第一个之外的任何参数?

如何解决《在一个采用多个可选参数的方法中,如何指定除第一个之外的任何参数?》经验,为你挑选了2个好方法。

我有这样的方法:

def foo(fruit='apple', cut="sliced", topping="ice cream")
  # some logic here
end

如何调用它只覆盖顶部参数但使用其他参数的默认值,如下所示

foo('','','hot fudge')

当然这不能按预期工作,但我想只为第三个可选参数提供一个值,并让前两个参数保持默认值.我知道如何用哈希做这个,但是使用上面的语法是他们的一种快捷方式吗?



1> sheldonh..:

从Ruby 2.0开始,您可以使用关键字参数:

def foo(fruit: 'apple', cut: "sliced", topping: "ice cream")
  [fruit, cut, topping]
end

foo(topping: 'hot fudge') # => ['apple', 'sliced', 'hot fudge']


从Ruby 2.1开始,支持“强制关键字参数”,请参见[发行说明](https://github.com/ruby/ruby/blob/ruby_2_1/NEWS#L16-17)

2> rampion..:

您无法使用此语法在ruby中执行此操作.我会为此推荐哈希语法.

def foo(args={})
  args[:fruit]    ||= 'apple'
  args[:cut]      ||= 'sliced'
  args[:topping]  ||= 'ice cream'
  # some logic here
end

foo(:topping => 'hot fudge')

您也可以使用位置参数执行此操作:

def foo(fruit=nil,cut=nil,topping=nil)
  fruit    ||= 'apple'
  cut      ||= 'sliced'
  topping  ||= 'ice cream'
  # some logic here
end

foo(nil,nil,'hot fudge')

请记住,这两种技术都会阻止您将实际nil参数传递给函数(有时可能需要)

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有