Kotlin基础教程-函数

来源:互联网 发布:c语言中的enum 编辑:程序博客网 时间:2024/05/16 13:06

函数

在之前的文章中,或多或少的介绍过函数的一些基本概念,这里不想再重头讲,只说一些之前没遇到过的。

中缀符号

关键字:infix

infix fun Int.getMin(x: Int): Int {    val result = if (this > x) x else this    return result}fun main(args: Array<String>) {    val a: Int = 2    println(a getMin 3)    println(a.getMin(3))}

表达式函数

fun double(x: Int): Int = x * 2

因为函数返回表达式,可以省略大括号。

局部函数

fun testDoctorq(name: String) {    println("Outer Fun $name")    fun testDoctorq(name: String, age: Int) {        println("Inner Fun $name")    }    testDoctorq(name, 28)}fun main(args: Array<String>) {    testDoctorq("doctorq")}

尾递归函数

在需要递归的地方,使用循环解决,防止堆栈溢出。

关键字:tailrec

tailrec fun findFixPoint(x: Double = 1.0): Double     = if (x == Math.cos(x)) x else findFixPoint(Math.cos(x))

实际执行的是如下代码:

private fun findFixPoint(): Double {    var x = 1.0    while (true) {        val y = Math.cos(x)        if ( x == y ) return y        x = y    }}

定义尾递归函数要注意的地方是,最后一个操作必须调用自己。而且递归调用代码后面不能再有其他操作。

原创粉丝点击