是否有兼容 Scala 2 和 Scala 3 的可变参数拼接语法?

问题描述 投票:0回答:1

背景

Scala 2 和 Scala 3 之间的差异之一是可变参数拼接的语法

如此给出

def combine(strings: String*): Unit = { println(strings.mkString("; ")) } val list = List("a", "b")
在 Scala 2 中,可以使用以下方式调用该函数:

combine((list ++ list): _*)
在 Scala 3 中语法是:

combine((list ++ list)*)
问题

如果我想编写在 Scala 2 和 Scala 3 中编译和运行的代码,如果我想继续使用可变参数,语法选项是什么?

我知道我可以将参数类型定义为

Seq[String]

,但这会放弃可变参数的便利性。

假设我可以更改方法定义和调用站点。

scala scala-3
1个回答
0
投票
对于 Scala 2,您可以在

-Xsource:3 中使用

-Xsource-feature
(可能与 
-Xsource:3-cross
 一起使用,或与 
scalacOptions
 一起使用)。

然后:

combine((list ++ list)*)
可以在 Scala 2 和 Scala 3 中编译。

© www.soinside.com 2019 - 2024. All rights reserved.