在Kotlin中,是否有相当于以下Swift代码的代码?
if let a = b.val {
} else {
}发布于 2017-10-13 09:09:40
您可以这样使用let-function:
val a = b?.let {
// If b is not null.
} ?: run {
// If b is null.
}注意,只有在需要代码块时才需要调用run函数。如果在猫王运算符(run-operator,?:)之后只有一个单线器,则可以删除?:。
请注意,如果run为null,或者如果let-block计算为null,则将计算let块。
因此,通常只需要一个if表达式。
val a = if (b == null) {
// ...
} else {
// ...
}在这种情况下,只有当else-block不是null时才会计算b。
发布于 2018-02-18 09:58:35
让我们首先确保理解提供的Swift成语的语义:
if let a = <expr> {
// then-block
}
else {
// else-block
}这意味着:“如果<expr>导致非零可选,则输入符号a绑定到未包装值的then-block,否则输入else块。
特别要注意的是,a仅在then_-块中绑定。在Kotlin,您可以很容易地通过调用
<expr>?.also { a ->
// then-block
}您可以添加这样的else-block:
<expr>?.also { a ->
// then-block
} ?: run {
// else-block
}这就产生了与Swift成语相同的语义。
发布于 2018-11-22 08:50:56
我的回答完全是其他人的抄袭。但是,我很难理解它们的表达方式。所以我想最好能给出一个更容易理解的答案。
迅速:
if let a = b.val {
//use "a" as unwrapped
}
else {
}在科特林:
b.val?.let{a ->
//use "a" as unwrapped
} ?: run{
//else case
}https://stackoverflow.com/questions/46723729
复制相似问题