代替
def foo(configuration: (String, String)*)
Run Code Online (Sandbox Code Playgroud)
我想能够写:
type Configuration = (String, String)*
def foo(configuration: Configuration)
Run Code Online (Sandbox Code Playgroud)
主要用例是在覆盖子类时提供简单的方法签名
更新:我可以靠近
type Param = (String, String)
def foo(configuration: Param*)
Run Code Online (Sandbox Code Playgroud)
但有没有办法做得更好?
不,*只允许在ParamType上,这是匿名函数或方法的参数类型.
4.6.2重复参数语法:ParamType :: = Type' '参数部分的最后一个值参数可以后缀" ",例如(...,x:T*).然后,方法中的这种重复参数的类型是序列类型scala.Seq [T].重复参数T*的方法采用类型为T的可变数量的参数.
编译错误@Eastsun的例子是在第一行,而不是第二行.这不应该被允许:
scala> type VarArgs = (Any*)
defined type alias VarArgs
Run Code Online (Sandbox Code Playgroud)
我提出了一个错误.
这与By-Name Parameters类似.在这种情况下,编译器会阻止创建类型别名:
scala> type LazyString = (=> String) <console>:1: error: no by-name parameter type allowed here
type LazyString = (=> String)
Run Code Online (Sandbox Code Playgroud)
你的最后一次尝试是表达这一点的标准方式.
| 归档时间: |
|
| 查看次数: |
2084 次 |
| 最近记录: |