美文网首页Android 进阶之路Android开发经验谈Android开发
重拾Kotlin(13)-命名参数、默认参数值、可变参数、局部函

重拾Kotlin(13)-命名参数、默认参数值、可变参数、局部函

作者: 业志陈 | 来源:发表于2019-05-30 09:07 被阅读16次

一、命名参数、默认参数值、可变参数

1.1、命名参数

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

fun main(args: Array<String>) {
    //错误,在指定了一个参数的名称后,之后的所有参数都需要标明名称
    //compute(index = 110, "leavesC")
    compute(index = 120, value = "leavesC")
    compute(130, value = "leavesC")

}

fun compute(index: Int, value: String) {

}   

1.2、默认参数值

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

fun main(args: Array<String>) {
    compute(24)
    compute(24, "leavesC")
}

fun compute(age: Int, name: String = "leavesC") {

}

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

fun main(args: Array<String>) {
    //错误,不能省略参数 name
    //compute(24)
    //compute(24,100)
    //可以省略参数 value
    compute("leavesC", 24)
}

fun compute(name: String = "leavesC", age: Int, value: Int = 100) {

}

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

fun main(args: Array<String>) {
    compute(age = 24)
    compute(age = 24, name = "leavesC")
    compute(age = 24, value = 90, name = "leavesC")
    compute(value = 90, age = 24, name = "leavesC")
}

fun compute(name: String = "leavesC", age: Int, value: Int = 100) {

}

1.3、可变参数

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

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

fun main(args: Array<String>) {
    compute()
    compute("leavesC")
    compute("leavesC", "叶应是叶")
    compute("leavesC", "叶应是叶", "叶")
}

fun compute(vararg name: String) {
    name.forEach { println(it) }
}

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

fun main(args: Array<String>) {
    val names = arrayOf("leavesC", "叶应是叶", "叶")
    compute(*names)
}

fun compute(vararg name: String) {
    name.forEach { println(it) }
}

1.4、局部函数

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

fun main(args: Array<String>) {
    compute("leavesC", "country")
}

fun compute(name: String, country: String) {
    fun check(string: String) {
        if (string.isEmpty()) {
            throw IllegalArgumentException("参数错误")
        }
    }
    check(name)
    check(country)
}

重拾 Kotlin 系列文章目录: 重拾 Kotlin

相关文章

  • kotlin 函数、参数使用详解

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

  • 重拾Kotlin(13)-命名参数、默认参数值、可变参数、局部函

    一、命名参数、默认参数值、可变参数 1.1、命名参数 为了增强代码的可读性,Kotlin 允许我们使用命名参数,即...

  • Python 函数

    调用函数 定义函数 函数的参数必选参数、默认参数、可变参数、关键字参数、命名关键字参数 位置参数 默认参数 可变参...

  • python-函数参数的顺序

    定义形参的顺序依次为:形参、默认参数、可变参数、命名关键字参数、关键字参数 可变参数后面不需要再添加命名关键字参数...

  • #python入门4#函数参数

    参数种类:5, 必选参数,默认参数, 可变参数,关键字参数,命名关键字参数 位置参数 对于power(x)函数,参...

  • Python参数

    1.默认参数:默认参数必须指向不变对象! 2.可变参数:可变参数允许你传入 0 个或任意 个参数,这些可变参数在函...

  • 函数的参数

    函数的参数顺序是 必选参数、默认参数、可变参数、关键字参数、命名关键字参数 必选参数 默认参数 可变参数 关键...

  • python---函数参数

    python---函数参数 在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参...

  • Swift 2 学习笔记 8.函数

    课程来自慕课网liuyubobobo老师 函数 函数基础 使用元组返回多个值 函数的命名 默认参数值 可变参数 常...

  • 关于python函数的参数

    必选参数 默认参数 可变参数 关键字参数-命名关键字参数

网友评论

    本文标题:重拾Kotlin(13)-命名参数、默认参数值、可变参数、局部函

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