Scala:我可以将选项转换为可变参数吗?

发布于 2024-12-18 11:37:26 字数 703 浏览 1 评论 0原文

我有一个 Option:

val myOption: Option[Int] = fooBar()

和一个采用可变参数参数的方法:

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

有什么方法可以将选项作为可变参数参数传递给该方法吗?即,如果选项是 Some(3) 则传递 3,如果是 None 则不传递任何内容。

尝试一下答案 scala:如何传递扩展列表作为 varargs 到方法中? 我尝试显式键入参数:

myMethod("xyz", myOption: _*)

但编译器抱怨它需要 Seq[Int]。看来Option没有实现Seq并且没有predef隐式转换。

鉴于编译器需要一个 Seq,我当然可以传递 myOption.toList: _*,但是有更好的方法吗?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无声无音无过去 2024-12-25 11:37:26
myMethod("xyz", myOption.toSeq: _*)
myMethod("xyz", myOption.toSeq: _*)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文