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

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

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

【问题讨论】:

  • Android Studio 可以为您转换代码。如果您遇到的问题是三元表达式,那么 kotlin 中的等效构造是 if else
  • 也可以使用when 表达式

标签: android kotlin syntax equivalent


【解决方案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
            }
    

    【讨论】:

      猜你喜欢
      • 2020-02-08
      • 2016-04-28
      • 2013-04-26
      • 2011-05-05
      • 2014-09-29
      • 2014-04-20
      • 1970-01-01
      • 2021-04-14
      相关资源
      最近更新 更多