我的方法中的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: Int
和bigThing: String
答案 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 }
}
等