如何在scala中传递一个或者没有变量arg?

ava*_*lez 5 scala variadic-functions playframework playframework-2.0

有,

def test(args: Any*) = args.size
Run Code Online (Sandbox Code Playgroud)

我想根据条件用空参数列表来调用它,但是要避免if/else.

我已经提出了这个解决方案:

test(List("one").filter( _ => condition) : _*)
Run Code Online (Sandbox Code Playgroud)

还有比这更好的方法吗?

有关更多上下文,我正在使用Play 2.0 scala,并且具有以下功能:

  user => Redirect(routes.Application.index).withSession("username" -> user._1).withCookies(
    List(Cookie("rememberme", Crypto.sign(user._1) + "-" + user._1)).filter(_ => user._3) : _*)
Run Code Online (Sandbox Code Playgroud)

在哪里user._3是rembemberme布尔.

我不想调用withSession或用空参数列表调用它(不是实例化Cookie)如果rememberme是假的,则以scala方式.

谢谢.

kas*_*ens 7

我认为在这种情况下嵌入if/ else是最干净的解决方案:

test((if (condition) Seq("one") else Seq.empty) : _*)
Run Code Online (Sandbox Code Playgroud)