根据参数是否为零,动态地向方法发送一些参数

Lui*_*sVM 2 ruby

我想避免这样做:

if a
     some_method(a, b)
else
     some_method(b)
end
Run Code Online (Sandbox Code Playgroud)

some_method是一个接受两个参数的函数,第一个是命名空间,如果没有提供,那么它只接受方法(b).

笔记:

  • 我不能用空字符串发送'a'或nil.
  • 我无法修改some_method.

有没有办法在一行中完成这项工作?

Sen*_*ess 6

看来你有一个允许可变数量参数的方法.你可以这样做:

args = [a,b]
some_method(*(args.compact))
Run Code Online (Sandbox Code Playgroud)

这样做:compact从列表中删除nils.然后*(splat运算符)将数组元素"展开"到适当的位置.