【发布时间】:2012-01-09 09:01:02
【问题描述】:
我有一个Option:
val myOption: Option[Int] = fooBar()
还有一个采用可变参数的方法:
def myMethod(a: String, b: Int*) = {...}
有没有办法将选项作为可变参数传递给方法?即如果选项是Some(3),则传递3,如果是None,则不传递任何内容。
试验答案 scala: How to pass an expanded list as varargs into a method? 我尝试显式输入参数:
myMethod("xyz", myOption: _*)
但编译器抱怨它需要Seq[Int]。貌似Option没有实现Seq,也没有predef隐式转换。
鉴于编译器需要Seq,我当然可以通过myOption.toList: _*,但有更好的方法吗?
【问题讨论】:
-
您的方法对
Seq有什么要求?您可以使用更通用的集合操作(即 foreach、map、filter 等)编写它 -
@schmmd 在这种特殊情况下,
myMethod是第三方库的一部分,所以我别无选择,只能使用可变参数。这是我自己的代码,我可能会重写方法以使用Iterable[Int]而不是Int*,并为自己省去所有这些麻烦!
标签: scala option variadic-functions