【问题标题】:How can i update 2 lists variables in when expression of kotlin?如何在 kotlin 的表达式中更新 2 个列表变量?
【发布时间】:2020-09-22 16:30:00
【问题描述】:
fun compareWithIntermediate(output: SHR, input: Intpos): CompareResult{
 val matched = mutableListOf<String>()
 val mismatched = mutableListOf<String>()
 val modifiableAttr = mutableListOf<String>()

 compareValue(output.a.b.c, input.a.b.c,matched,mismatched)
 ......
 compareValue(output.x.y.z, input.x.y.z,matched,mismatched)

 return CompareResult(matched,mismatched)       

}


private fun compareValue(outputVal: String, inVal: String, matched:MutableList<String>, 
   mismatched:MutableList<Diff>){

   when(outputVal.compareTo(inVal)==0){
      true -> matched.add("abc")
       false -> mismatched.add(Diff("abc",outputVal,inVal))
   }
 }

因此,每次调用 compareValue() 时,我都想根据条件将值添加到匹配或不匹配的列表中。

我如何才能实现这一点,因为何时可能出现多个真/假。如何根据条件将值添加到相应的列表中。 枚举是否有助于解决这个问题,而不是在“何时”中编写多个相同的条件??

【问题讨论】:

  • 既然可以使用if (outputVal.compareTo(inVal) == 0) matched.add("abc") else mismatched.add(...),为什么还要使用when
  • 我不确定我是否理解您的问题。你不喜欢这里到底发生了什么?您的 compareValue 函数需要 2 个字符串并比较它们。只能有两种结果:对还是错?
  • 只是为了使用我认为何时使用的惯用方式
  • @jlengrand 我需要根据真假更新匹配列表/不匹配列表。
  • @I_am_Vits 这不正是你现在正在做的吗?

标签: list kotlin kotlin-when


【解决方案1】:

请为您的情况使用更简单的if 语句:

if (outputVal.compareTo(inVal) == 0) {
   matched.add("abc")
   // update mismatched list here if need
} else {
   mismatched.add(Diff("abc",outputVal,inVal))
   // update matched list here if need
}

【讨论】:

  • 您的代码更惯用,但没有回答标题中的问题。
  • 是的。如何在多个相同条件的表达式中实现??
  • @I_am_Vits 现在有 3 个人告诉您,您的代码按照您的描述工作。正如您所描述的,没有错误。我有一个,你的例子似乎没有显示出来。您能否修改您的描述或提供一个显示您的问题的示例
  • @I_am_Vits multiple same conditions 是什么意思?您能否更新您的答案以显示它
  • @Sergey。假设我调用了 compareValue 5 次,结果为真,那么我需要将字符串添加到匹配列表中。如何在“何时”更新匹配列表以添加新条目?
猜你喜欢
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
相关资源
最近更新 更多