【问题标题】:Handle Kotlin Filter Predicate multiple inner condition处理 Kotlin Filter Predicate 多个内部条件
【发布时间】:2019-07-26 16:16:33
【问题描述】:

在下面的自定义对象列表中,我想通过比较 ViewModel 类中的值来实现基于某些条件的过滤

我的列表会是这样的

var inputList: MutableList<Person>

人物数据类如下

data class Person(val inContact: Boolean, val age: Int, val isFavourite:Boolean .......)

根据条件过滤:

val fav = mViewModel.personInContact.value //TRUE or FALSE
val personAge = mViewModel.personAge.value // INT VALUE

现在我想考虑inContact,前提是fav 是true。

如果fav 是false,我根本不想考虑inContact。

所以如果过滤列表逻辑是这样的,它会一直考虑fav条件。

val filteredFinalList = inputList.filter{

            (it. inContact == fav)//how to ignore this check based on fav's value?

            &&

            (it.age >=  personAge)

            && SOME OTHER CONDITIONS PRESENT AS WELL
}

如果只有fav 是true 和避免如果fav 在inputList.filter 中是false,我怎么能考虑(it. inContact == fav)?

【问题讨论】:

    标签: android kotlin filter kotlin-android-extensions


    【解决方案1】:

    根据您的描述,如果fav 是true,您要确保它等于it.inContact。如果fav 是false,您希望表达式计算为true,以便可以检查其余条件。这将是:

    ((fav && it.inContact) || !fav)
    

    任一:

    • fav 是 true 并且 fav 等于 it.inContact。因为我们已经知道fav 是true,所以我们只会检查it.inContact 是否是true。因此,我们不需要比较这两个值,只需检查它们是否都是true
    • fav 是 false,因此我们希望整个表达式的计算结果为 true。此时!fav 将始终为true,这将使|| 表达式的计算结果为true。

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 1970-01-01
      • 2022-01-10
      • 2011-12-06
      • 2019-06-17
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 2011-08-28
      相关资源
      最近更新 更多