首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相当于Kotlin的“如果让”语句

相当于Kotlin的“如果让”语句
EN

Stack Overflow用户
提问于 2017-10-13 06:25:58
回答 16查看 121.5K关注 0票数 231

在Kotlin中,是否有相当于以下Swift代码的代码?

代码语言:javascript
复制
if let a = b.val {

} else {

}
EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2017-10-13 09:09:40

您可以这样使用let-function:

代码语言:javascript
复制
val a = b?.let {
    // If b is not null.
} ?: run {
    // If b is null.
}

注意,只有在需要代码块时才需要调用run函数。如果在猫王运算符(run-operator,?:)之后只有一个单线器,则可以删除?:

请注意,如果run为null,或者如果let-block计算为null,则将计算let块。

因此,通常只需要一个if表达式。

代码语言:javascript
复制
val a = if (b == null) {
    // ...
} else {
    // ...
}

在这种情况下,只有当else-block不是null时才会计算b

票数 446
EN

Stack Overflow用户

发布于 2018-02-18 09:58:35

让我们首先确保理解提供的Swift成语的语义:

代码语言:javascript
复制
if let a = <expr> {
     // then-block
}
else {
     // else-block
}

这意味着:“如果<expr>导致非零可选,则输入符号a绑定到未包装值的then-block,否则输入else块。

特别要注意的是,a仅在then_-块中绑定。在Kotlin,您可以很容易地通过调用

代码语言:javascript
复制
<expr>?.also { a ->
    // then-block
}

您可以添加这样的else-block:

代码语言:javascript
复制
<expr>?.also { a ->
    // then-block
} ?: run {
    // else-block
}

这就产生了与Swift成语相同的语义。

票数 96
EN

Stack Overflow用户

发布于 2018-11-22 08:50:56

我的回答完全是其他人的抄袭。但是,我很难理解它们的表达方式。所以我想最好能给出一个更容易理解的答案。

迅速:

代码语言:javascript
复制
if let a = b.val {
  //use "a" as unwrapped
}
else {

}

在科特林:

代码语言:javascript
复制
b.val?.let{a -> 
  //use "a" as unwrapped
} ?: run{
  //else case
}
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46723729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档