可变长度参数和_*符号
2016-10-10 14:38
459 查看
Scala 允许你指明函数的最后一个参数可以是重复的。这可以允许客户向函数传入可变长度参数列表。想要标注一个重复参数,在参数的类型之后放一个星号。例如:
这样定义, echo 可以被零个至多个 String 参数调用:
函数内部,重复参数的类型是声明参数类型的数组。因此, echo 函数里被声明为类型
的 args 的类型实际上是
重复参数传入,你会得到一个编译器错误:
要实现这个做法,你需要在数组参数后添加一个冒号和一个
这个标注告诉编译器把 arr 的每个元素当作参数,而不是当作单一的参数传给 echo 。
scala> def echo(args: String*) = for (arg <- args) println(arg) echo: (String*)Unit
这样定义, echo 可以被零个至多个 String 参数调用:
scala> echo() scala> echo("one") one scala> echo("hello", "world!") hello world!
函数内部,重复参数的类型是声明参数类型的数组。因此, echo 函数里被声明为类型
“ String* ”
的 args 的类型实际上是
Array[String]。然而,如果你有一个合适类型的数组,并尝试把它当作
重复参数传入,你会得到一个编译器错误:
scala> val arr = Array("What's", "up", "doc?") arr: Array[java.lang.String] = Array(What's, up, doc?) scala> echo(arr) <console>:7: error: type mismatch; found : Array[java.lang.String] required: String echo(arr) ˆ
要实现这个做法,你需要在数组参数后添加一个冒号和一个
_*符号,像这样:
scala> echo(arr: _*) What's up doc?
这个标注告诉编译器把 arr 的每个元素当作参数,而不是当作单一的参数传给 echo 。
相关文章推荐
- Scala可变长度参数
- Scala可变长度参数~
- JAVA 可变长度的参数
- 标C编程笔记day06 动态分配内存、函数指针、可变长度参数
- Java语法糖1:可变长度参数以及foreach循环原理
- Scala可变长度参数
- C/C++可变参数宏, 编译期获取宏的可变参数长度
- 深入了解JAVA可变长度的参数(Varargs)
- 长度可变参数
- Java语法糖1:可变长度参数以及foreach循环原理
- Python可变长度的参数
- JAVA 的 可变长度的 方法的 参数 比如 String...arg
- scala可变长度参数(二)
- java可变长度参数
- params 长度可变参数
- Java中长度可变参数的实现 其实质是数组
- java中可变长度参数的应用
- Python 可变长度参数
- GNU C语言的 扩展(二)零长度数组&可变参数宏
- scala可变长度参数(一)