Kotlin基础——函数定义及调用

文章介绍了Kotlin中的函数参数特性,如命名参数用于明确参数归属,参数默认值允许灵活使用,可变参数处理数组,以及与Java在这些方面的对比。还讨论了顶层函数、顶层属性、扩展函数、中缀调用和解构声明,以及字符串和正则表达式的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 函数参数

1.1 命名参数

fun main() {
   
    val list = arrayListOf(1, 2, 3)
    val result = joinToString(list, ";", "(", ")")
    println(result)
}

fun <T> joinToString(
    collection: Collection<T>,
    separator: String,
    prefix: String,
    postfix: String
): String {
   
    val result = StringBuilder(prefix)
    for ((index, element) in collection.withIndex()) {
   
        if (index > 0)
            result.append(separator)
        result.append(element)
    }
    result.append(postfix)
    return result.toString()
}

传统的方法,无法分清到底是哪个参数,只能依赖IDE提示。

joinToString(list, /*separator*/";", /*prefix*/"(", /*postfix*/")")

Java中可以通过注释来指示这个参数的含义,或者通过enum枚举类型的名称来区分
在Kotlin中则可以通过命名参数来达到这个目的

joinToString(list, separator = ";", prefix = "(", postfix = ")")

指定该参数是赋给哪个形参的

1.2 参数默认值

Kotlin中的函数支持设置参数默认值,拥有默认值的参数可以不用传参而使用默认值,也可以传参来覆盖默认值。
像上面的函数, 如果前缀和后缀只是偶尔需要改变,则可以使用默认参数

fun <T> joinToString(
    collection: Collection<T>,
    separator: String = ";",
    prefix: String = "(",
    postfix: String = ")"
): String {
   ...}
val result = joinToString(list)

有了参数默认值之后,可以选择其中的一些参数进行赋值

val result = joinToString(list, prefix = "[")

其他的使用默认值
参数默认值只能从右往左相连的参数,否则还是需要提供显示的参数,因为会产生歧义

fun <T> joinToString(
    collection: Collection<T>,
    separator: String = ";",
    prefix: String,
    postfix: String = ")"
): String

这样编译没有问题,但是第二个参数还是默认会给separator,所以这样跳着的设置默认参数没有意义,separator的默认参数无法生效
Java中没有参数默认值,怎么调用Kotlin中的有参数默认值的函数呢?
Java中调用,需要提供所有的参数

List list = List.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值