Local variable name 'pay_status' doesn't match regex '[a-z][A-Za-z\d]*'

最近总是因为一些异常警告搞得有点崩溃,于是打算以后把遇到的异常都总结起来,方便以后查看。

 

今天,在使用Kotlin写项目的时候遇到一个常量名称定义的警告,如下:

刚看到这个警告的时候我在想,这要正则有什么关系?于是我在我平常加的一些群里想看看有没有哪个大神能够知道,把图贴上去以后,没一个人鸟我,我好受伤!

他们都在讨论自己的刀功,菜功!为什么?你们想问,因为到中午了,哈哈~你懂了么?

不说费话了,告诉你们原因:

这是因为我常量名称中带有“_”。把它去了就好了,原因嘛:

在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))
}

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值