默认参数
fun reformat(str: String,
normalizeCase: Boolean = true,
upperCaseFirstLetter: Boolean = true,
divideByCamelHumps: Boolean = false,
wordSeparator: String= "bbb") {
}
可以看到方法中共有5个参数,其中后面4个有默认值
默认值的好处是什么呢?
fun reformat("aaa")//这样是可以的
也就是说当函数有默认值的时候,参数有默认值的话,我们可以不传这个参数,它会使用默认值,是不是很简便
但是如果我想改变其中一个,
例1reformat("aa",true)//这样是可以的
相当于reformat("aa",true,true,false,"bbb")
例2reformat("aa","aa")//错误
例子2为什么不行?
他其实相当于reformat("aa","aa",true,false,"bbb")
参数2是boolean,结果我们传的是String,我们看看错误编译器的提示。
提示说需要一个boolean类型的参数,但是我们后面3个不是有默认值吗?
这就说明他不能自动的去匹配,只会默认照着参数的顺序来匹配。这有点坑是不是
其实不然 假设
funreformat("aa",true)
试问这个true是参数234中的哪一个?请往下看
命名参数
如果要在多个默认参数之中,设置个别参数的值,就可以使用命名参数了。
这里用上面的例2说明
reformat("aa",wordSeparator="aa")//这样是可以的
解决了reformat("aa","aa")//错误
也就说,你需要改某一个又默认值的参数,可以指定名称
reformat("aa",wordSeparator="aa")
相当于reformat("aa",true,true,false,"aa")
简直不要太爽。
网友评论