什么是“ ??”在科特林的意思

时间:2019-09-12 12:26:05

标签: kotlin nullable

我是一名学习mvvm的学生。

我看到了一些代码。

那么“ ??”怎么办?在科特林语中是卑鄙的。

我搜索了此内容,但找不到。

如果我输入错误,该如何解决? ->(s.toString ??“”)

1。

fun wrap(a: Int?): Int?? {
    return a
}

fun desc(a: Int??) {
    if (a == null) {
        println("None")
    } else {
        if (a == null) {
            println("Some(None)")
        } else {
            println("Some(Some($a))")
        }
    }
}

fun main(args: Array<String>) {
    val a: Int?? = wrap(null)
    desc(a) 
}

2。

<layout/>
    <data>
        <variable>
            name="signid"
            type="SignidViewModel" />
    </data>

    <EditText
        android:onTextChanged='@{(s,start,end,before) -> signid.Check_ID(s.toString ?? "")}' />
</layout>

3 个答案:

答案 0 :(得分:3)

看起来像一些冗余代码。您可以安全地删除第二个问号

fun wrap(a: Int?): Int? {
    return a
}

fun desc(a: Int?) {
    if (a == null) {
        println("None")
    } else {
        if (a == null) {
            println("Some(None)")
        } else {
            println("Some(Some($a))")
        }
    }
}

fun main(args: Array<String>) {
    val a: Int? = wrap(null)
    desc(a)
}

在第二种情况下,您必须使用?:运算符而不是??

<layout/>
    <data>
        <variable>
            name="signid"
            type="SignidViewModel" />
    </data>

    <EditText
        android:onTextChanged='@{(s,start,end,before) -> signid.Check_ID(s.toString ?: "")}' />
</layout>

val s = string ?: ""的意思是

if (string != null) {
    val s = string
} else {
    val s = ""
}

答案 1 :(得分:1)

在这里您可以使用?(null安全运算符)。如果由于某种原因您的值变为null,则不会崩溃。

fun wrap(a: Int?): Int? {
    return a
}

fun desc(a: Int?) {
    if (a == null) {
        println("None")
    } else {
        if (a == null) {
            println("Some(None)")
        } else {
            println("Some(Some($a))")
        }
    }
}

fun main(args: Array<String>) {
    val a: Int? = wrap(null)
    desc(a)
}

所以请这样使用。让我知道

答案 2 :(得分:0)

空安全运算符定义为'?'在科特林。如果在dart中谈论空感知运算符,则在这种情况下使用两个问号。在Kotlin中实现了null感知,从而使变量安全为

  

val testString:String?

在飞镖(或其他任何语言)中,这称为空检查,

  

x = y ?? z

的含义,将y赋给x直到y不为null,否则为z