xii
06/24/2020, 11:58 AMfooList.filter { if (state.contains('A') it.isA() else false || if (state.contains('B') it.isB() else false }
but it looks uglyxii
06/24/2020, 11:59 AMandylamax
06/24/2020, 12:01 PMxii
06/24/2020, 12:03 PMJavier
06/24/2020, 12:12 PMalightgoesout
06/24/2020, 12:15 PMval f = if (state.contains("A")) Foo::isA else Foo::isB
list.filter(f)
xii
06/24/2020, 12:22 PMfunFilterByState(state: List<String>){
val test = ListOf(Foo("a", null), Foo (null, "b"))
return test.filter(if (state.contains("a")) it.isA() else false || if (state.contains("b") it.isB() else false)
}
data class Foo(val f: String?, val g: String?){
val isA: Boolean = f != null
val isB: Bolean = g != null}
xii
06/24/2020, 12:23 PMMichael de Kaste
06/24/2020, 12:51 PMstate.contains('a') && isA || state.contains('b') && isB
operator precedence and short circuiting will always result in your desired result here.Michael de Kaste
06/24/2020, 1:01 PMxii
06/24/2020, 1:07 PMaraqnid
06/24/2020, 1:09 PMfooList.filter(if (state.contains('A')) { it.isA() } else { it.isB() })