Kotlin学习 - 函数

函数声明

函数的基本组成部分包括:名称、入参、返回值和函数体,使用fun关键字定义函数,定义形式为:

fun methodName(param: paramType): ReturnType {
    
    
	...
}

无参无返回值函数

fun func(){
    
    
    println("hello world!")
}

有入参和返回值的函数

fun max(a: Int, b: Int): Int {
    
    
    return if (a > b) a else b
}

语句和表达式

这里解释下,刚学习Kotlin看到上面直接return if可能有点懵。Kotlin中if是表达式,不是语句。语句和表达式的最大的区别在于,表达式有值,语句是没有值。因此看上面代码,直接return的就是if表达式,这也是和Java代码不同的地方。

Kotlin中除了(fordodo/while)这种循环结构,大多数都是控制结构都是表达式。而在Java中所有的控制语句都是语句。

声明优化

当函数体只有一行代码的时候,可直接去掉大括号用=,声明方式优化如下:

fun max(a: Int, b: Int): Int = if (a > b) a else b

由于Kotlin存在类型推导,返回值类型也可省略,声明方式优化如下:

fun max(a: Int, b: Int) = if (a > b) a else b

函数调用:

fun main() {
    
    
    println(max(12, 56))
}

默认值参

如果不打算传入参数,可以预先给参数指定默认值。经常会用在入参多并且不经常变化的场景。看个例子:

fun main() {
    
    
    printStudentInfo("lucy", 7, 2)
    printStudentInfo("Jack")
}

fun printStudentInfo(name: String, age: Int = 6, grade: Int = 1) {
    
    
    println("name :$name | age :$age | grade :$grade")
}
//运行结果
name :lucy | age :7 | grade :2
name :Jack | age :6 | grade :1

打印学生信息,年级默认值是一年级,一年级孩子大部分是6岁,因此设置默认值为6,设置好以后,函数的入参如果和默认相同只传名字即可。

具名函数参数

当函数的入参数量比较多的时候,我们在传参的时候经常会在入参顺序上出错,Kotlin中在传递入参的时候,可以指明具体的参数名称。看下使用;

fun main() {
    
    
    printStudentInfo(age = 7, name = "Jack")
}

fun printStudentInfo(name: String, age: Int = 6, grade: Int = 1) {
    
    
    println("name :$name | age :$age | grade :$grade")
}

还是上面的例子,在传递参数的时候就可以按上面的方式指明参数名和参数值。并且如果使用命名值参,可以不用管值参的顺序。

猜你喜欢

转载自blog.csdn.net/kongqwesd12/article/details/130965049
今日推荐