继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Scala菜鸟的进阶之路之控制结构和函数(四)

慕虎7371278
关注TA
已关注
手记 1302
粉丝 202
获赞 876

1、我们在调用某些函数时并不显式地给出所有参数,对于这些函数我们可以使用默认参数。例如:


webp

这个函数有两个参数,left和right,带有默认值"["和"]"


webp

使用默认参数的例子


webp

可以自定义参数的值


webp

如果相对参数的数量,你给出的值不够,默认参数会从后往前逐个应用进来

webp

也可以在提供参数值的时候指定参数名。注意带名参数并不需要跟参数列表顺序完全一致。带名参数可以让函数更加可读。它们对于那些有很多默认参数的函数来说也很有用。


webp

可以混用未命名参数和带名参数,只要那些未命名的参数是排在前面的即可:

变长参数


1、变长参数函数:

webp

可以使用任意多的参数来调用该函数

webp


2、如果你已经有一个值的序列,则不能直接将它传入上述函数。举个错误的例子:


webp

   如果sum函数被调用时传入的是单个参数,那么该参数必须是单个整数,而不是一个整数区间。

   解决这个问题的办法是告诉编译器你希望这个参数被当作参数序列处理。追加: _*

举个例子:


webp

   在递归定义中我们会用到上述语法:

webp

在这里,序列的head是它的首个元素,而tail是所有的其他元素的序列,这又是一个Seq,我们用
_*  
来将它转换成参数序列


3、当你调用边长参数且参数类型为Object的Java方法,如PrintSteam.printf 或 MessageFormat.format时,你需要手工对基本类型进行转换。例如:


webp

对于任何Object类型的参数都是这样,类似的参数在边长参数方法中使用报的最多



作者:独行者独行者
链接:https://www.jianshu.com/p/8c06c7f62235


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP