Kotlin基础——函数
开始
kotlin函数使用fun关键字声明,参数必须有类型声明
1
2
3
fun function(arg: Int): Int {
return arg * 2
}
函数作用域:顶层函数、成员函数、局部函数
kotlin支持顶层函数和顶层属性,也支持局部函数
默认参数和具名参数
函数参数可以使用默认参数,使用函数时可以使用具名参数指定参数值
1
2
3
4
5
6
7
fun add(a: Int, b: Int = 10): Int {
return a + b
}
add(5, 10) // 正常调用
add(5) // 使用b默认值
add(a = 5, b = 10) // 具名参数调用
add(a = 5) // 具名参数调用,使用b默认值
当默认值参数在无默认值参数之前,无默认值参数只能通过具名参数调用
1
2
3
4
fun add(a: Int, b: Int = 10, c: Int): Int {
return a + b + c
}
add(10, 5, c = 20) // 默认值参数和它之前的参数可以按顺序传值,默认值之后的参数必须具名参数传值
Unit
Unit类似于void,表示不需要返回值,若不指定返回值类型,默认为Unit
1
2
3
4
5
6
fun method(): Unit {
// ...
}
fun method() { // 返回Unit
// ...
}
单表达式函数
当一个函数中只有一个表达式时,可以简化语法
1
2
3
4
fun add(a: Int, b: Int): Int = a + b
// 当返回值类型可从表达式中推断时,可省略返回值类型
fun add(a: Int, b: Int) = a + b
// 函数代码块不支持返回值类型推断
可变参数
可变参数使用vararg关键字修饰,作为参数数组使用
1
2
3
4
fun method(a: Int, vararg b: Int, c: Int) {
// statement
}
method(2, 3,4,5,6, c = 10) // 可变参数和它之前的参数按顺序传值,可变参数之后的参数必须具名参数传值
中缀表示法
使用infix关键字声明的函数可以使用中缀表达式形式,即a op b
,等价于a.op(b)
- 函数必须是成员方法或扩展函数
- 函数必须只有一个参数
- 函数参数不能是可变参数,不能有默认值
- 当在类中需要使用当前类作为接收者时,接收者为this
1
2
3
4
5
6
7
8
9
10
class Person {
infix fun say(content: String) {
println(content)
}
}
fun main() {
val person = Person()
// person称为接收者,"Hello"为参数
person say "Hello"
}
本文由作者按照 CC BY 4.0 进行授权