代替
def foo(configuration: (String, String)*)
我希望能够写:
type Configuration = (String, String)*
def foo(configuration: Configuration)
主要用例是在子类中重写时提供简单的方法签名
更新:
我可以靠近
type Param = (String, String)
def foo(configuration: Param*)
但有没有办法做得更好呢?
No, the *
仅允许在 ParamType 上使用,即匿名函数或方法的参数类型。
4.6.2 重复参数语法:ParamType ::= Type ‘’最后一个值
参数部分的参数可以
后缀为“”,例如(..., x:T *)。
这种重复参数的类型
方法内部是序列
类型 scala.Seq[T ]。方法与
重复参数 T * 取 a
T 类型参数的数量可变。
编译器错误@Eastsun 的示例位于第一行,而不是第二行。这是不应该允许的:
scala> type VarArgs = (Any*)
defined type alias VarArgs
我提出了一个bug http://lampsvn.epfl.ch/trac/scala/ticket/3180.
这与按名称参数的限制类似。在这种情况下,编译器会阻止创建类型别名:
scala> type LazyString = (=> String) <console>:1: error: no by-name parameter type allowed here
type LazyString = (=> String)
您的最后尝试是表达这一点的标准方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)