Kotlin

函数声明及其用法

2020-11-17  本文已影响0人  码农修行之路

函数声明:

例子:声明一个函数

fun double(a: Int): Int {
    return 2 * a
}

传统方法调用函数:

fun main() {
    val result = double(3)
    print(result)
}

调用成员函数:

fun main() {
    val result = double(3)
    print(result)
    // 成员函数使用点表示方法调用
    PersonTwo().printName()
}
fun double(a: Int): Int {
    return 2 * a
}
class PersonTwo() {
    fun printName() {
        print("小黄")
    }
}

函数参数:

fun main() {
    // 普通传递参数 需要按照参数顺序传递
    addAc(2, 3)
    // 具名参数 无需按照顺序传递
    addAc(b = 2, a = 6)
    // 默认参数 也就是函数参数可以指定默认值 如果调用函数时该参数不传 那么就会使用默认值
    // 换句话说,默认参数可以不传,可以减少重载的
    addAc(2, 2)// 不传,就取默认参数
    addAc(2, 2, 4)

}

fun addAc(a: Int, b: Int, c: Int = 0): Boolean {
    val value = a + b
    var bo = false
    if (value > 5) {
        println("超过五位童鞋考零分")
        bo = true
    } else {
        println("班级整体成绩还可以")
        bo = false
    }
    return bo
}
open class ClassA() {
    open fun test(def: Int = 0) {
    }
}

class ClassB : ClassA() {
    //override fun test(def: Int = 3) {}// An overriding function is not allowed to specify default values for its parameters
    // 正确的写法 是去掉重写的默认参数的值
    override fun test(def: Int) {}
}
fun main() {
    // 报错
    //test(3)// None of the following functions can be called with the arguments supplied.
    test(3,4)
    // 或
    test(b = 4)
    // 或
    test(b = 3, a = 4)
}
fun test(a:Int = 4, b:Int) {
}

返回Unit的函数:

如果一个函数不返回任何有用的值,它的返回类型是Unit 可以是显示也可以隐式

fun cancel1() {}
fun cancel2():Unit {}

单表达式函数:

如果函数的函数体只有一行代码 就可以使用简洁方式 例如:

fun ackOk1():Int {
    return 2;
}
fun ackOk2():Int = 2
fun ackOk3() = 2

可变数量参数

函数的参数通常可以使用vararg修饰符进行标记 通常也是最后一个参数

fun main() {
    scoreT("小黄", 66, 77, 88)
}
fun scoreT(name: String, vararg score: Int) {
    var sum = 0
    score.forEach {
        sum += it
    }
    println("$name 的总成绩:$sum")
}

执行结果:小黄 的总成绩:231

fun main() {
    scoreV(22, 33, 44, name = "小李子")
}
fun scoreV(vararg score: Int, name: String) {
    var sum = 0
    score.forEach {
        sum += it
    }
    println("$name 的总成绩:$sum")
}

中缀表示法

标有infix关键字的函数 也可以使用中缀表示法(忽略该调用的点与圆括号)
中缀函数必须满足以下几个条件:

  1. 它们必须是成员函数或者扩展函数
  2. 它们必须只有一个参数
  3. 其参数不得接收可变数量的参数且不能有默认值
    例如:
fun main() {
    val result = 1.shl(1)
    val result1 = 1 shl 1
    val result2 = 2 shl 1
    println(result)
    println(result1)
    println(result2)
} 
// 整数值的二倍
infix fun Int.shl(x: Int) = x * 2 // ⽤中缀表⽰法调⽤该函数 1 shl 2 // 等同于这样 1.shl(2)

执行结果:
2
2
4

上一篇 下一篇

猜你喜欢

热点阅读