gpt4 book ai didi

scala - Scala:如何指定varargs作为类型?

转载 作者:行者123 更新时间:2023-12-04 13:45:03 24 4
gpt4 key购买 nike

代替

def foo(configuration: (String, String)*)

我希望能够写:
type Configuration =  (String, String)*
def foo(configuration: Configuration)

主要用例是在子类中重写时提供简单的方法签名

更新:
我可以靠近
type Param = (String, String)
def foo(configuration: Param*)

但是有更好的方法吗?

最佳答案

不,*仅在ParamType上允许,即匿名函数或方法的参数类型。

4.6.2 Repeated Parameters Syntax: ParamType ::= Type ‘’ The last value parameter of a parameter section may be suffixed by “”, e.g. (..., x:T *). The type of such a repeated parameter inside the method is then the sequence type scala.Seq[T ]. Methods with repeated parameters T * take a variable number of arguments of type T.



编译器错误@Eastsun的示例在第一行,而不是第二行。这不应该被允许:
scala> type VarArgs =  (Any*)
defined type alias VarArgs

我提出了 bug

这与“按名称参数”的限制类似。在这种情况下,编译器将阻止创建类型别名:
scala> type LazyString = (=> String) <console>:1: error: no by-name parameter type allowed here
type LazyString = (=> String)

您的最终尝试是表达这一点的标准方法。

关于scala - Scala:如何指定varargs作为类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2446263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com