在开发过程中我们会遇到很多种在类中方法的不同重载,有些方法的重载很多个参数,但在我们使用时候有些参数大部分情况是有默认值的,那么我们为什么不减少一些重载,给一些参数默认值,从而在使用时候选择性的传递参数。就像下面这段代码定义,我们就可以只传递第一个参数就可以完成调用,如果这样定义方法可以省去了很多重载
fun <T> joinString(collection: Collection<T>, separator: String = ", ", prefix: String = "", postfix: String = ""): String {
val stringBuiler = StringBuilder(prefix)
for ((index, element) in collection.withIndex()) {
if (index > 0) stringBuiler.append(separator)
stringBuiler.append(element)
}
stringBuiler.append(postfix)
return stringBuiler.toString()
}
比如说我们进行一个最简单的调用只传递第一个参数如下
// 测试函数带默认值
val list = arrayListOf(1,2,4)
Log.e("default value", joinString(list))
代码很好理解就是,我们只传递了第一个参数,其他参数都走的默认值,这样用起来方便了许多。如果有特殊情况,比如说分隔符需要使用其他的比如说用“==”来分割,我们可以像下面来使用
val list = arrayListOf(1,2,4)
Log.e("default value", joinString(list, separator = "=="))
大家可以看到我们使用了命名参数来使用了新的分隔符,首和尾我们这两个参数就不说了,因为和分隔符是类似的用法,直接修改他们就可以。
注意,这篇总结用到了命名参数和参数默认值两个比较重要的支持点,在这里写着片文章来做一下学习记录。