【发布时间】: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