就我而言,IF的减少数量

时间:2018-07-23 20:35:18

标签: kotlin

我的方法中的IF太多:

if (myObject?.name !=null)
first.text = myObject.name.bigThing

if (myObject?.age !=null)
second.text = myObject.age.bigThing

if (myObject?.surname !=null)
third.text = myObject.surname.bigThing

还有20个...

如何缩短代码?

age/surname/name是我自己的类Big,其中有id: IntbigThing: String

5 个答案:

答案 0 :(得分:1)

一种方法可能是:

myObject?.age?.let { second.text = it.bigThing }

如果要将值放在TextView内:

first.text = myObject?.age?.bigThing

答案 1 :(得分:0)

如果愿意,可以像这样更改它们:

myObject?.name?.run { first.text = this.bigThing }

答案 2 :(得分:0)

一个选项是

fun updateText(x: WhateverTheTypeOfFirstSecondEtcIs, y: Big?) {
    if (y != null) { x.text = y.bigThing }
}

updateText(first, myObject?.name)
updateText(second, myObject?.age)
updateText(third, myObject?.surname)

答案 3 :(得分:0)

我不知道kotlin的确切语法,但是我希望能够创建这样的方法:

String extractBigThing(Big big){
    if(big != null) return big. GetBigThing() ;

    return null;
} 

并这样称呼它:

first.text = extractBigThing(myObject.name);

基本思想是将重用功能提取到可重用代码中,然后可以对这些功能进行单元测试以提高代码的健壮性。

我希望这会有所帮助。

答案 4 :(得分:0)

每行

myObject?.name?.bigThing?.let { first.text = it }

myObject?.apply {
  name?.bigThing?.let { first.text = it }
  age?.bigThing?.let { second.text = it }
}