Ruby中是否有一种方法可以使所需的所有关键字参数中的任何一个都不做?

时间:2019-04-15 16:54:50

标签: ruby

我正在尝试编写一种方法,该方法可使用三种类型的参数,但只需要其中一种。

def convert(arg_a: 1, arg_b: 2, arg_c: 'foo')
end

请注意,arg_a和arg_b属于同一类型(假设为数字),因此使用一个强制性参数,然后根据输入类型进行决策在这里行不通。

这时我的代码如下:

def convert(arg_a: nil, arg_b: nil, arg_c: nil)
  if arg_b.nil? && arg_c.nil? && arg_a
    # do something with arg_a
  elsif arg_a.nil? && arg_c.nil? && arg_b
    # do something with arg_b
  elsif arg_a.nil? && arg_b.nil? && arg_c
    # do something with arg_c
  else
    raise ArgumentError
end

在我看来,此代码有点气味,可以改进。有什么想法吗?

0 个答案:

没有答案