Kotlin三元运算符[重复]

Posted

技术标签:

【中文标题】Kotlin三元运算符[重复]【英文标题】:Kotlin ternary operator [duplicate] 【发布时间】:2019-07-14 07:05:46 【问题描述】:

如何将以下代码从 Java 转换为 Kotlin?

Boolean mBoolean = false
view.setVisibility(mBoolean ? View.VISIBLE : View.GONE);

【问题讨论】:

android Studio 可以为您转换代码。如果您遇到的问题是三元表达式,那么 kotlin 中的等效构造是 if else 也可以使用when 表达式 【参考方案1】:
val mBoolean = false
view.visibility = if(mBoolean) View.VISIBLE else View.GONE

但是我怀疑在这里将mBoolean 设置为不可变是否有意义,所以我会选择var mBoolean,而不是val mBoolean

【讨论】:

var 将是正确的翻译,因为 mBoolean 在 Java 代码中不是 final 在 Kotlin 中使用 val 总是更好。例如,有一些功能,比如智能案例可以与 val 一起使用,而不是与 var 声明一起使用【参考方案2】:

您可以通过创建扩展函数来扩展view.visibility = if(mBoolean) View.VISIBLE else View.GONE

fun View.makeVisible(show:Boolean)
    this.visibilility = if(show) View.VISIBLE else View.GONE   



var mBolean = false
view.makeVisible(mBoolean)

【讨论】:

【参考方案3】:

您也可以使用 when 运算符:

 val mBoolean = false
        view.visibility = when (mBoolean) 
            true -> View.VISIBLE
            false -> View.GONE
        

【讨论】:

以上是关于Kotlin三元运算符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin 等效于三元运算符 [重复]

kotlin中的三元运算符[重复]

为啥 Kotlin 不支持“三元运算符”[关闭]

Java三元运算符语法[重复]

从三元运算符返回 lambda [重复]

具有不同类型表达式的三元运算符[重复]