Kotlin-神奇的下划线字符(_)

提起下划线字符(_),最熟悉的莫过于命名名称时,使用下划线作为一个单词的分隔符,比如,btn_login。但,在Kotlin中,却赋予下滑线神奇的魔法,先不说下划线的作用。这里有一个这样的想法:在某些情况下,我们所声明的函数中,比如lambda表达式或者解构声明中的所以参数,并不是所有的参数都可以用到。我们总是想着将用不到的不作声明,那么就需要一种方法来省略这些参数。

在Kotlin中,可以使用一个下划线字符(_)作为lambda或表达式函数的参数的名称,或作为解构条目的名称。

作为lambda函数的参数名称

之前,我们已经熟练使用,解构声明语法为lambda表达式传递参数,所以我们可以这么做:

fun main(args: Array<String>) {

    val aa = mapOf(1 to "a",2 to "B")

    aa.forEach { key, value -> println("value:$value") 
}

在上述示例中,只是用到了value值,key并没有用到。这样,我们就想不在声明key,那么就需要使用下划线字符(_)作为key替代,即:

fun main(args: Array<String>) {

    val aa = mapOf(1 to "a",2 to "B")

    aa.forEach { _, value -> println("value:$value") 
}

作为解构声明的参数

解构声明就是将一个对象解构(destructure)为多个变量,也就是意味着一个解构声明会一次性创建多个变量。尽管这样很方便,但是,如果用不到的变量必然也必须得声明,从而造成了变量的冗余。对于解构声明不了解的,可参考:Kotlin-解构声明

之前,通过解构声明创建多个变量时,我们这么做:

fun main(args: Array<String>) {

    val book = Book(1, "英语")
    val (id, name) = book
}

data class Book(var id: Int, var name: String)

上面的示例中,解构book声明了 id,name两个变量。如果只需要id这一个变量时,可以这么做:

val book = Book(1, "英语")
val (id, _) = book

数字字面值中的下划线

对于来说大家都很熟悉了,由11位数字组成,也就是13XXXXXXXXX。这样看一串数字,总觉得别扭。如果可以3-4-4这样的方式显示,其值为13X XXXX XXXX,最好不过了。

现在,Kotlin的数字面值可以使用下划线来分隔数值进行分组:

val oneMillion = 1_000_000
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010

fun main(args: Array<String>) {

    // Log: 1000000
    println(oneMillion)

    // Log: ffecde5e
    println(hexBytes.toString(16))

    // Log: 11010010011010011001010010010010
    println(bytes.toString(2))
}
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值