Scala可变长度参数和:_*使用
1. 可变长度参数
cala 允许你指明函数的最后一个参数可以是重复的。这可以允许客户向函数传入可变长度参数列表。想要标注一个重复参数,在参数的类型之后放一个星号。
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 。
def sum(args: Int*):Int={
var total:Int=0
for (arg <- args) {total=total+arg}total
}val s = sum(1 to 5:_*)
2. 下划线的用法
转自http://www.zhihu.com/question/21622725
- 作为“通配符”,类似Java中的*。如
import scala.math._
:_*
作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = sum(1 to 5:_*)
就是将1 to 5当作参数序列处理。- 指代一个集合中的每个元素。
- 在元组中,可以用方法
_1
,_2
,_3
访问组员。如a._2
。其中句点可以用空格替代。 - 使用模式匹配可以用来获取元组的组员
- 还有一点,下划线_代表的是某一类型的默认值。
对于Int来说,它是0。
对于Double来说,它是0.0
对于引用类型,它是null。
转自:https://blog.csdn.net/m0_37692438/article/details/71171732
Scala可变长度参数和:_*使用相关推荐
- scala可变长度参数函数
2019独角兽企业重金招聘Python工程师标准>>> scala可变长度参数函数只需要在参数列表的最后放一个星号,实验如下: def main (args:Array[String ...
- scala可变长度参数(一)
为什么80%的码农都做不了架构师?>>> 在开发中,有时候实现一个可以接受可变长度参数列表的函数会更方便,如下代码: package org.funmo.scala objec ...
- python函数定义时带号的可变参数_在定义函数时,某个参数名字前面带有一个 * 符号表示可变长度参数,可以接收任意多个普通实参并存放于一个元组之中。_学小易找答案...
[填空题]任意长度的 Python 列表.元组和字符串中最后一个元素的下标为 ( ) . [简答题]从键盘输入一个字符串,将小写字母全部转换成大写字母, 输出到磁盘文件"D:\test.tx ...
- scala case class 继承_数字硬件系统设计之一:Scala快速入门(2)
原想简单笼统介绍一下scala,后感觉这么做意思不大,网友看了和没看一样,还是应该稍微详细具体一点,故而把系列编号由(上)(中)(下),改为(上)(2)(3)(4)(5)....,(上)就是(1)吧, ...
- Scala可变参数列表
2019独角兽企业重金招聘Python工程师标准>>> Scala可变参数列表 Scala函数支持的可变参数列表,命名参数和参数缺省值定义. 重复参数 Scala在定义函数时允许指定 ...
- java 可变长度参数/动态参数...
示例1 可变长度参数必须是参数列表中的最后一个,不然会报错 String ...paramMore与String...paramMore.String... paramMore等效 import or ...
- Scala教程之:scala的参数
文章目录 默认参数值 命名参数 scala的参数有两大特点: 默认参数值 命名参数 默认参数值 在Scala中,可以给参数提供默认值,这样在调用的时候可以忽略这些具有默认值的参数. def log(m ...
- Java语法糖1:可变长度参数以及foreach循环原理
语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...
- python中函数的参数类型( 位置参数、关键字参数、默认值参数和可变长度参数)
目录 位置参数: 关键字参数: 默认值参数: 可变长度参数: 1.元组可变长度参数 : 2.字典可变长度参数: 附上练习代码: 位置参数: 实参与形参个数完全相同,按位置按顺序将实参传递给形参 def ...
最新文章
- python使用openCV加载图像、并将BGR格式转换成HSV格式、定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)、并使用mask信息进行颜色分离、BGR格式的图像转化为RGB、并可视化
- or函数python_Python numpy.bitwise_or函数方法的使用
- 解决pycharm创建github工程但push失败的问题
- 转:MySQL性能优化神器Explain使用分析
- Cocos2d—声音API
- 做演员是圆梦 做生意学会面对现实
- 被关起来日子的流水帐
- 显卡服务器已停止响应,电脑提示显卡驱动已停止响应并且已成功恢复该怎么解决?...
- elementui更改el-table表头背景颜色和字体颜色
- 短信计费(信息学奥赛一本通-T1398)
- 发一个招聘启事,成都有兴趣的朋友可以来看一看。
- csv导入sqlite(python)
- http发送16进制报文_图解HTTP 第三章HTTP报文内的HTTP信息
- Xcode8上传app一直显示正在处理
- cass等距离等分线段的命令键_南方cass快捷命令
- 防火墙基本应用(华为USG6000V)
- TFIDF算法Java实现
- 质量管理3个过程及相关重点
- 单像空间后方交会模型
- 转载一篇ps更换背景色
热门文章
- 简述网桥的特点_网桥的工作原理和特点是什么呢?
- 第1篇 初识IPP(Integrated Performance Primitives)
- php获取本机内网ip地址
- iOS 四舍六入五成双算法
- 从零开始学R(四)——常用命令:帮助,文件导入与导出与基本操作
- 计算机管理找不到新安装的系统,我的电脑开机显示找不到启动设备,请在硬盘上安装操作系统怎么办?开...
- 传鸿蒙操作系统掌舵人王成录已从华为离职
- 常州刘国钧计算机专业,2020常州刘国钧高等职业技术学校的录取分数线
- 【自然语言处理与文本分析】自然语言处理概要
- web前端培训—css源码笔记(二)【爱创课堂】