我有一个Option
:Scala:我可以将选项转换为可变参数吗?
val myOption: Option[Int] = fooBar()
而这需要一个可变参数PARAM的方法:
def myMethod(a: String, b: Int*) = {...}
有什么办法打发选项的方法作为可变参数PARAM?即如果选项是Some(3)
则传递3,如果是None
,则不传递任何内容。
的答案试验,以 scala: How to pass an expanded list as varargs into a method?我试着输入明确的说法:
myMethod("xyz", myOption: _*)
但编译器抱怨说,它需要一个Seq[Int]
。看起来Option
没有实现Seq
,并且没有预定义的隐式转换。
鉴于编译器想要一个Seq
,我当然可以通过myOption.toList: _*
,但是有没有更好的方法?
你的方法需要什么'Seq'?有可能你可以用更普遍的收集操作(比如foreach,地图,过滤器等)编写它。 – schmmd
@schmmd在这种特殊情况下,'myMethod'是第三方库的一部分,所以我别无选择,只能使用可变参数。它是我自己的代码,我可能会重写这个方法来取代'Int *'而不是'Int *',并保存所有这些麻烦! –