我是一名学习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>
答案 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