我正在尝试编写一种方法,该方法可使用三种类型的参数,但只需要其中一种。
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
在我看来,此代码有点气味,可以改进。有什么想法吗?