1、我们在调用某些函数时并不显式地给出所有参数,对于这些函数我们可以使用默认参数。例如:
这个函数有两个参数,left和right,带有默认值"["和"]"
使用默认参数的例子
可以自定义参数的值
如果相对参数的数量,你给出的值不够,默认参数会从后往前逐个应用进来
也可以在提供参数值的时候指定参数名。注意带名参数并不需要跟参数列表顺序完全一致。带名参数可以让函数更加可读。它们对于那些有很多默认参数的函数来说也很有用。
可以混用未命名参数和带名参数,只要那些未命名的参数是排在前面的即可:
变长参数
1、变长参数函数:
可以使用任意多的参数来调用该函数
2、如果你已经有一个值的序列,则不能直接将它传入上述函数。举个错误的例子:
如果sum函数被调用时传入的是单个参数,那么该参数必须是单个整数,而不是一个整数区间。
解决这个问题的办法是告诉编译器你希望这个参数被当作参数序列处理。追加: _*
举个例子:
在递归定义中我们会用到上述语法:
在这里,序列的head是它的首个元素,而tail是所有的其他元素的序列,这又是一个Seq,我们用
_*
来将它转换成参数序列
_*
来将它转换成参数序列
3、当你调用边长参数且参数类型为Object的Java方法,如PrintSteam.printf 或 MessageFormat.format时,你需要手工对基本类型进行转换。例如:
对于任何Object类型的参数都是这样,类似的参数在边长参数方法中使用报的最多