kotlin函数中的默认参数和命名参数

默认参数

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,我们看看错误编译器的提示。

Paste_Image.png

提示说需要一个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")
简直不要太爽。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,421评论 19 139
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,459评论 0 4
  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 10,813评论 0 7
  • 细心的你是否也发现了AFN的内存泄漏的问题了呢. 解决方法 将有问题的语句全部替换成单例后,再用instrumen...
    上冬十二阅读 6,399评论 2 0
  • 续上一篇的思路,解决延迟计算的问题。相关的keyword很容易想到yield。在C#中的延迟计算介绍可以参考一些文...
    YkWorm阅读 3,811评论 0 0