在Kotlin有一个相当于Swift代码下面?
if let a = b.val {
} else {
}
在Kotlin有一个相当于Swift代码下面?
if let a = b.val {
} else {
}
当前回答
我的答案完全是抄袭别人的。但是,我不容易理解他们的表情。所以我想提供一个更容易理解的答案会很好。
迅速:
if let a = b.val {
//use "a" as unwrapped
}
else {
}
在芬兰湾的科特林:
b.val?.let{a ->
//use "a" as unwrapped
} ?: run{
//else case
}
其他回答
在kotlin中也有类似的方法来实现Swift的if-let风格
if (val a = b) {
a.doFirst()
a.doSecond()
}
您还可以分配多个可空值
if (val name = nullableName, val age = nullableAge) {
doSomething(name, age)
}
如果可空值被使用超过1次,这种方法将更适合。在我看来,它从性能方面有所帮助,因为可为空的值将只检查一次。
来源:Kotlin Discussion
也许我已经很晚了,但最简单的方法是打开和选择
yourOptionalString ?: return
这是下面的所有行都将有解开的字符串
Swift如果让声明在Kotlin
简短的回答是使用简单的IF-ELSE,因为在这篇评论的时候,在Kotlin LET中没有等效的东西,
if(A.isNull()){
// A is null
}else{
// A is not null
}
在我看来,最干净的选择是这样的
迅速:
if let a = b.val {
} else {
}
科特林
b.val.also { a ->
} ?: run {
}
如果让我们使用内联的乐趣,我们可以得到像Swift一样的unwring语法
inline fun <T:Any?> T?.unwrap(callback: (T)-> Unit) : Boolean {
return if (this != null) {
this?.let(callback)
true
}else {
false
}
}
用途::
val name : String? = null
val rollNo : String? = ""
var namesList: ArrayList<String>? = null
if (name.unwrap { name ->
Log.i("Dhiru", "Name have value on it $name")
})else if ( rollNo.unwrap {
Log.i("Dhiru","Roll have value on it")
}) else if (namesList.unwrap { namesList ->
Log.i("Dhiru","This is Called when names list have value ")
}) {
Log.i("Dhiru","No Field have value on it ")
}