smichel17
10/17/2021, 10:40 PMval distinct: Boolean
val list: List<T>
val maybeDistinct = if (distinct) list.distinct() else list
It's similar to takeUnless
, but without the intermediary null, which makes it kind of ridiculous
val maybeDistinct = list.takeUnless { distinct } ?: list.distinct()
I could write an extension function, something like
val maybeDistinct = list.transformIf(distinct) { it.distinct() }
…which in this case is just as verbose, but has nicer signaling, imo. Maybe there's a stdlib function like this that I don't know about?smichel17
10/17/2021, 10:48 PMhho
10/17/2021, 11:11 PMif
is the winner: Cleanest, easiest to understand and shortest code!smichel17
10/17/2021, 11:17 PM.let { if (distinct) it.distinct() else it }
vs
.transformIf(distinct) { it.distinct() }
(also, could be a shorter name, like applyIf
or mapIf
)smichel17
10/17/2021, 11:19 PMprivate fun moveFavouritesToFront(originalList: List<DisplayItem<I>>): List<DisplayItem<I>> {
return if (originalList.size > itemsPerRow && moveFavoritesToFront) {
favs.moveLastPickedDisplayItemsToFront(javaClass.simpleName, originalList, originalList)
} else {
originalList
}
}
smichel17
10/17/2021, 11:21 PMprivate fun moveFavouritesToFront(originalList: List<DisplayItem<I>>): List<DisplayItem<I>> {
originalList.transformIf(originalList.size > itemsPerRow && moveFavoritesToFront) {
favs.moveLastPickedDisplayItemsToFront(javaClass.simpleName, it, it)
}
}
smichel17
10/17/2021, 11:36 PMif (!distinct) list else list.distinct()
but this requires inverting the condition :/smichel17
10/17/2021, 11:52 PMprivate fun moveFavouritesToFront(originalList: List<DisplayItem<I>>): List<DisplayItem<I>> {
return if (!(originalList.size > itemsPerRow && moveFavoritesToFront)) originalList
else favs.moveLastPickedDisplayItemsToFront(javaClass.simpleName, originalList, originalList)
}
is good too, except for the awkward inversionelizarov
10/19/2021, 3:57 PMYoussef Shoaib [MOD]
10/21/2021, 3:26 PMletIf
function sometimes that does practically the same thing.