Open VKBobyr opened 3 years ago
I propose the following modifier functionality:
typedef Modifier<T> = T Function(T val); typedef ConditionCheck<T> = bool Function(T val); extension ModificationExtension<T> on Iterable<T> { Iterable<T> modifyWhere( ConditionCheck<T> shouldModify, Modifier<T> modifier, ) { return map((item) => shouldModify(item) ? modifier(item) : item); } Iterable<T> modifyFirstWhere( ConditionCheck<T> shouldModify, Modifier<T> modifier, ) { bool modified = false; return modifyWhere( (v) => !modified && shouldModify(v), (v) { modified = true; return modifier(v); }, ); } } void main() { final items = [1, 2, 3, 4, 5, 6]; final a = items.modifyWhere((v) => v < 3, (i) => -i); final b = items.modifyFirstWhere((v) => v > 3, (i) => -i); print(a); // (-1, -2, 3, 4, 5, 6) print(b); // (1, 2, 3, -4, 5, 6) }
Very common operation when modifying certain items in a list.
@VKBobyr Seems like you already have the code for that. Why don't you just open a pull request if you have the implementation ready?
I propose the following modifier functionality:
Motivation
Very common operation when modifying certain items in a list.