Search code examples
scalavariadic-functionsscala-option

Scala: Can I convert an Option to varargs?


I have an Option:

val myOption: Option[Int] = fooBar()

And a method that takes a varargs param:

def myMethod(a: String, b: Int*) = {...}

Is there any way to pass the option to the method as a varargs param? i.e. if the option is Some(3) then pass 3, and if it is None then pass nothing.

Experimenting with the answer to scala: How to pass an expanded list as varargs into a method? I tried explicitly typing the argument:

myMethod("xyz", myOption: _*)

but the compiler complains that it requires a Seq[Int]. It seems that Option does not implement Seq and there is no predef implicit conversion.

Given that the compiler wants a Seq, I can of course pass myOption.toList: _*, but is there a nicer way?


Solution

  • myMethod("xyz", myOption.toSeq: _*)