Kotlin 函数

函数的定义

函数又称为方法,是具有特定功能的一段独立程序。函数可以将功能代码进行封装,在使用时直接调用即可,这样程序代码不仅看起来简洁,而且还减少了代码量。在Kotlin中函数是通过fun关键字来声明的,函数的语法格式具体如下:

函数声明  函数名称([参数名称:参数类型,参数名称:参数类型]):返回值类型{ 
    执行语句 
    … 
    return 返回值 
}

接下来对上述语法格式进行说明,具体如下。

  • 函数声明:Kotlin中的函数声明使用关键字fun。
  • 函数名称:每一个函数都有函数名称,方便在函数调用时使用。
  • 参数类型:用于限定调用函数时传入参数的数据类型。
  • 参数名称:是一个变量,用于接收调用函数时传入的数据。
  • 返回值类型:用于限定函数返回值的数据类型。
  • 返回值:被return语句返回的值,该值会返回给调用者。

注意 如果一个函数不返回任何类型的值,则它的返回值类型实际上是Unit(无类型),类似于Java中的void。当函数的返回值类型为Unit时,可以省略不写Unit。

接下来我们通过一个案例来创建一个函数,具体代码如下所示。

package com.itheima.chapter03
// 定义一个doubleValue() 函数,参数为x,参数为Int 类型,返回值为Int 类型
fun doubleValue(x: Int): Int {
    return 2  *  x              // 返回值是传递过来的参数* 2 的值
}
fun main(args: Array<String>) {
    var result = doubleValue(2)   //result 变量存放doubleValue() 的返回值
    println("doubleValue() 的返回值为" + result) //打印doubleValue() 的返回值
}

运行结果:

doubleValue()的返回值为4

上述代码中,定义了一个函数doubleValue(x:Int):Int{return 2*x},其中doubleValue()是函数名称,x是传递的参数名称,x后面的Int为参数类型,()后面的Int是返回值类型,{}表示函数体,函数体中的return 2*x表示函数的返回值。

函数的类型

Kotlin中的函数根据不同的角度可分为4种类型,从参数的角度可分为有参函数和无参函数,从返回值的角度可分为有返回值的函数和无返回值的函数。即无参无返回值、无参有返回值、有参无返回值、有参有返回值。接下来我们将通过一些案例来详细讲解这4种类型的函数。

  • 无参无返回值函数,具体示例代码如下:
fun argValue() { 
    println("这是一个无参无返回值的函数") 
}

上述代码中,通过一个fun关键字声明了一个函数argValue(),该函数中没有传递参数,也没有设置返回值类型以及通过return来返回一个值,这个函数就是无参无返回值函数。

除了上述表示方式之外,无参无返回值的函数还有另外一种表示方式,就是明确指定返回值类型为Unit,即该函数无返回值,这个返回值类型类似Java中的void,修改之后的代码如下:

fun argValue(): Unit { 
    println("这是一个无参无返回值的函数") 
}

上述代码中,主要是在函数argValue()后面添加了一个返回值类型Unit,当函数没有返回值时,这个返回值类型也可以忽略不写。同样在有参无返回值的函数中也可以添加一个返回值类型Unit。

  • 无参有返回值函数,具体示例代码如下:
fun argValue(): String { 
    return " 这是一个无参有返回值的函数" 
}

上述代码中,argValue()函数虽然没有传递参数,但是设置了返回值类型为String,并在函数体中通过return关键字返回了一个String类型的数据。

  • 有参无返回值函数,具体示例代码如下:
fun argValue(content: String) { 
    println("该函数传递的参数为" + content) 
}

上述代码中,argValue()函数中的content表示传递的参数名称,String表示传递的参数类型,最后通过println()函数打印传递的参数content。

  • 有参有返回值函数,具体示例代码如下:
fun argValue(content: String): String { 
    return content 
}

上述代码中,argValue()函数中的content表示传递的参数名称,String表示传递的参数类型,()后面的String表示返回值的类型,函数体中return关键字后面的content表示该函数的返回值。

单表达式函数

如果函数体中只有一行代码,则可以把包裹函数体的花括号{}替换为等号“=”,把函数体放在等号“=”的后面,这样的函数称为单表达式函数。如果函数体中的代码不止一行就不能转换为单表达式函数。接下来我们通过一个例子将一个普通的函数转化为单表达式函数。

对于一个普通的函数,可以直接如下表示:

fun add(a: Int, b: Int): Int { 
    return a + b 
}

上述代码中,通过一个fun关键字声明了一个add()函数,该函数传递的参数分别为a和b,其参数类型均为Int类型,括号()后面的Int表示该函数的返回值类型。在函数体中通过return关键字返回了一个表达式“a+b”

由于上述函数的返回值是一个表达式,并且函数体中只有一行代码,因此可以将上述的普通函数转化为单表达式函数。稍微修改上述代码之后的代码如下:

fun add(a: Int, b: Int): Int = a + b

上述代码中,该函数返回的值是表达式a+b的值。

在上述语法格式的基础上,单表达式还可以省略函数的返回值类型,使代码更加简洁。具体示例代码如下:

fun add(a: Int, b: Int) = a + b

在上述代码中可以看到,该函数并没有写返回值类型,而是直接在括号()后边通过“=”指定函数体。对于这样没有指定返回值类型的函数,编辑器会根据函数的返回值进行推断。

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!