博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala学习手记21 - 传递变长参数
阅读量:7062 次
发布时间:2019-06-28

本文共 802 字,大约阅读时间需要 2 分钟。

在Java中是可以使用变长参数的,如下面的方法:

public void check(String ... args){        for(String tmp : args){            System.out.println(tmp);        }    }

在scala中也可以使用变长参数。和java一样,也是只有最后一个参数可以接收可变长度的参数。使用方式是在参数类型后使用特殊符号“*”,如下面的max()方法:

def max(values: Int*) = values.foldLeft(values(0)) {  Math.max}println(max(2, 5, 3, 7, 1, 6))

foldLeft是TraversableOnce类的一个方法。上面的代码实现了从一个集合中获取最大数值的方法。

代码执行结果如下图:

不过和java不同的是,我们不能将一个数组中的元素当做变长参数直接传递给方法,下面代码执行就会报错:

def max(values: Int*) = values.foldLeft(values(0)) {  Math.max}val numbers = Array(2, 5, 3, 7, 1, 6)println(max(numbers))

执行结果:

如果想使用数组中的元素作为变长参数,可以将数组展开成为离散值:需要使用“:_*”符号组合:

val numbers = Array(2, 5, 3, 7, 1, 6)println(max(numbers:_*))

执行结果:

在这一节里出现了两个新的概念:函数(foldLeft)和数组(numbers)。尤其是函数,现在读起来有些困难。不过很快就可以接触到了。

#####

转载于:https://www.cnblogs.com/amunote/p/5677468.html

你可能感兴趣的文章
P2456 - 膜拜神犇
查看>>
杭电1513--Palindrome(滚动数组+LCS)
查看>>
杭电1465--不容易系列之一
查看>>
上三角
查看>>
安装Mysq方法
查看>>
字符串的截取,substr和mb_substr
查看>>
C# 多线程学习系列二
查看>>
简单词法分析器的实现
查看>>
9-14NOIP模拟赛总结
查看>>
进程中的信号量
查看>>
Docker 快速入门教程
查看>>
centos7 xfs 文件系统配置quota 用户磁盘配额
查看>>
2019-1-5吃货联盟作业
查看>>
poj 1836 -- Alignment
查看>>
C#语言struct结构体适用场景和注意事项
查看>>
蓝桥杯 日期问题(枚举)
查看>>
如何为网站更新有价值的内容?
查看>>
XPsp3键盘设备链/栈信息_01_Code
查看>>
laravel报错1071 Specified key was too long; max key length is 1000 bytes
查看>>
12.scrapy框架之递归解析和post请求
查看>>