1 创建集合
fun <T> joinToString(collection: Collection<T>, separator:String, prefix:String,
postfix:String): String{
val result = StringBuilder(prefix)
for ((index, element) in collection.withIndex()){
if (index > 0) result.append(separator)
result.append(element)
}
result.append(postfix)
return result.toString()
}
fun main(){
val set = hashSetOf(1,7,53)
val list= arrayListOf(1, 7,53)
val map= hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three")
val strings = listOf("first", "second" ,"fourteenth")
val numbers = setOf(1,14,2)
val listAdd = listOf(1,2,3)
//等价于java中的getClass()
println(set.javaClass)
println(list.javaClass)
println(list)
println(map.javaClass)
println(strings.last())
println(numbers.max())
println(joinToString(listAdd ,"; ", "(",")"))
}
---------------------------------------
class java.util.HashSet
class java.util.ArrayList
[1, 7, 53]
class java.util.HashMap
fourteenth
14
(1; 2; 3)
2 命名参数
当调用一个 Kotlin 定义的函数时,可以显式地标明一些参数的名称。 如果在调用一个函数时,指明了一个参数的名称,为了避免混淆,那它之后的所有参数都需要标明名称。
fun <T> joinToString(collection: Collection<T>, separator:String = ", ", prefix:String = "", postfix:String = ""): String{
val result = StringBuilder(prefix)
for ((index, element) in collection.withIndex()){
if (index > 0) result.append(separator)
result.append(element)
}
result.append(postfix)
return result.toString()
}
在 Kotlin 中,可以在声明函数的时候,指定参数的默认值,这样就可以避免创建重载的函数。
fun main(){
val listAdd = listOf(1,2,3)
println(joinToString(listAdd,", ","","")) //1, 2, 3
println(joinToString(listAdd)) //1, 2, 3
println(joinToString(listAdd,"; ")) //1; 2; 3
println(joinToString(listAdd, postfix = ";",prefix ="# "))//# 1, 2, 3;
}
fun <T> joinToString(collection: Collection<T>, separator:String = ", ", prefix:String = "", postfix:String = ""): String{
val result = StringBuilder(prefix)
for ((index, element) in collection.withIndex()){
if (index > 0) result.append(separator)
result.append(element)
}
result.append(postfix)
return result.toString()
}
3 顶层函数和属性