目录
1. 定义一个函数
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
函数的声明以关键字 fun 开始,函数名称紧随其后:这个例子中函数名称是
max ,接下来是括号括起来的参数列表。参数列表的后面跟着返回类型,它 之间用一个冒号隔开。
2. 表达式函数体
函数体由单个表达式构成的函数,可以去掉花括号和return语句。
fun min(a : Int, b: Int ): Int = if(a<b) a else b
还可以进一步简化max函数,省略返回类型(只有表达式体函数的返回值类型可以省略)
fun min(a : Int, b: Int ) = if(a<b) a else b
3. 更简洁的使用函数
demo: 更改默认的toString打印。
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()
}
结果:
val list1 = listOf(1,2,3)
println( joinToString(list1,";","(",")" ))
//输出:(1;2;3)
现在我们来修改这个函数,让它的调用更加简洁
3.1 命名参数
- 可以显式的标明一些参数的名称,如果在调用一个函数时,指明了一个参数的名称,为了避免混淆,它之后的所有参数都需要标明名称
- 在用命名参数来声明函数后,在调用时可以按你自己想要的任意顺序给定参数值
val list1 = listOf(1,2,3)
println( joinToString(list1,separator = ";",prefix = "(",postfix = ")" ))
3.2 默认参数值
Kotlin中可以在声明参数时设置默认参数值。
优点:避免创建重载的函数。
//给参数设置默认值
fun<T> joinToString(collection : Collection<T>,
separator : String = ",",
prefix : String = "[",
postfix : String = "]"
)
现在就可以用所有参数来调用这个函数,或者省略部分函数。
println( joinToString(list1,separator = ";",prefix = "(",postfix = ")" ))
println(joinToString(list1))
println(joinToString(list1,";"))
//结果
(1;2;3)
[1,2,3]
[1;2;3]
注意:当你从Java中调用Kotlin函数的时候,必须显示的指定所有的参数值。
4. 顶层函数
Java 作为 门面向对象的语言,需要所有的代码都写作类的函数。
Kotlin中,可以把函数直接放到代码文件的顶层,不用从属于任何的类。
package dataUtil
fun min(a : Int, b: Int ): Int =<