美文网首页Kotlin
kotlin 函数、参数使用详解

kotlin 函数、参数使用详解

作者: 巫师Android | 来源:发表于2022-02-18 10:58 被阅读0次

    知识点概览:
    命名参数、默认参数值、可变参数、局部函数
    将函数作为参数传递

    一、命名参数、默认参数值、可变参数、局部函数

    1.1、命名参数

    为了增强代码的可读性,Kotlin 允许我们使用命名参数,即在调用某函数的时候,可以将函数参数名一起标明,从而明确地表达该参数的含义与作用,但是在指定了一个参数的名称后,之后的所有参数都需要标明名称

    image

    1.2、默认参数值

    可以在声明函数的时候指定参数的默认值,从而避免创建重载的函数

    image

    对于以上这个例子,如果按照常规的调用语法时,必须按照函数声明定义的参数顺序来给定参数,可以省略的只有排在末尾的参数

    image

    如果使用命名参数,可以省略任何有默认值的参数,而且也可以按照任意顺序传入需要的参数

    image

    1.3、可变参数

    可变参数可以让我们把任意个数的参数打包到数组中传给函数,Kotlin 的语法相比 Java 有所不同,改为通过使用 varage 关键字声明可变参数

    例如,以下的几种函数调用方式都是正确的

    image

    在 Java 中,可以直接将数组传递给可变参数,而 Kotlin 要求显式地解包数组,以便每个数组元素在函数中能够作为单独的参数来调用,这个功能被称为展开运算符,使用方式就是在数组参数前加一个 *

    image

    1.4、局部函数

    Kotlin 支持在函数中嵌套函数,被嵌套的函数称为局部函数

    image

    二、将函数作为参数传递

    1.1、无参数函数调用

    class Hello {
    
        fun say() {
            Timber.i("Hello World")
        }
    
        /**
        * 在 Kotlin 中无返回为 Unit
        *
        * 此方法接收一个无参数的函数并且无返回
        *
        * 使用参数名加 () 来调用
        */
        fun people(hello: () -> Unit) {
            hello()
        }
    
        /**
        * 在 kotlin 中有一个约定,如果最后一个参数是函数,可以省略括号
        */
        fun main() {
            people ({ say() })
            people { say() }
        }
    }
    

    1.2、有参数函数调用

    class Hello {
        fun say(msg: String) {
            Log.i(TAG, "Hello $msg")
        }
    
        /**
         * 当调用的函数有形参时,
         * 需要在调用的函数声明,并使用声明的形参;
         * 函数参数中的形参无法使用
         */
        fun people(arg0: String, hello: (arg1: String) -> Unit) {
            hello(arg0)
            // hello(arg1) 这样调用将报错
        }
    
        fun main(){
            people("Android") {
                say(it)    // 打印:Hello Android
                 say("world")  // 打印:Hello world
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:kotlin 函数、参数使用详解

        本文链接:https://www.haomeiwen.com/subject/oroelrtx.html