• Kotlin中的函数分类(顶层、成员、局部、递归等)


    Kotlin 中,函数可以按照不同的方式进行分类。在本篇博客中,我们将介绍以下几种常见的函数分类,并提供示例代码进行演示。

    1. 顶层函数:

    顶层函数是指定义在文件中的函数,不依赖于任何类或对象。它们可以在文件的任何位置被调用。示例代码如下:

    fun total(a: Int) {
        var b: Int = 5
    
        // 局部函数
        fun add(): Int {
            return a + b
        }
        println(add()) // 8
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 局部函数:

    局部函数是定义在另一个函数内部的函数。它们只能在所在函数内部被访问和调用。示例代码如上述顶层函数中的 add 函数。

    1. 递归函数:

    递归函数是指在函数体内部调用函数本身的函数。递归函数通过不断调用自身来解决问题,直到达到基本情况。示例代码如下:

    fun sum(num: Int): Int {
        if (num == 1) {
            return 1
        } else {
            return num + sum(num - 1)
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 尾递归函数:

    尾递归函数是一种特殊的递归函数,其调用出现在函数的末尾。尾递归函数可以通过使用 tailrec 修饰符来标识,在编译时将其优化为循环结构,避免堆栈溢出。示例代码如下:

    tailrec fun sum2(num: Int, total: Int = 0): Int {
        if (num == 1) {
            return 1 + total
        } else {
            return sum2(num - 1, num + total)
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 函数重载:

    函数重载是指在同一个作用域内定义多个同名函数,但参数个数或参数类型不同。函数重载与函数的返回值类型无关。示例代码如下:

    fun totalNum(num: Int): Int {
        if (num == 1) {
            return 1
        } else {
            return num + totalNum(num - 1)
        }
    }
    
    fun totalNum(num: Float): Float {
        if (num == 1F) {
            return 1F
        } else {
            return num + totalNum(num - 1F)
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    1. 成员函数:

    成员函数是定义在类内部的函数,它们属于类的实例,需要通过对象来调用。示例代码如下:

    class Person {
        // 成员函数
        fun hello() {
            println("hello")
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    以上就是 Kotlin 函数的分类和示例代码。通过不同类型的函数,我们可以实现各种功能和逻辑,并使代码更加模块化和可重用。

    希望本篇博客对你有所帮助!

  • 相关阅读:
    关键点检测 HRNet网络详解笔记
    VR模拟鸡胚培养接种实验,打造沉浸式的学习环境
    leetcode 二分查找·系统掌握 寻找旋转排序数组中的最小值II
    企业数据安全重要?私有化部署IM,保障信息安全无忧虑!
    28.组合数学
    java 实现外观模式
    create® 3入门教程-创建Create3 Docker映像
    JavaScript高级 |如何玩转箭头函数?
    UML类图以及常用集合
    面试系列Spring:循环依赖Spring是如何解决的
  • 原文地址:https://blog.csdn.net/qq_29752857/article/details/133928163