mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-04-21 03:15:14 +08:00
tweaks (#1821)
* opt: _onTapUp * opt: set contains * opt: elementAtOrNull
This commit is contained in:
committed by
GitHub
parent
37fa165f59
commit
7260a387f9
@@ -24,13 +24,6 @@ extension IterableExt<T> on Iterable<T> {
|
||||
}
|
||||
|
||||
extension ListExt<T> on List<T> {
|
||||
T? getOrNull(int index) {
|
||||
if (index < 0 || index >= length) {
|
||||
return null;
|
||||
}
|
||||
return this[index];
|
||||
}
|
||||
|
||||
bool removeFirstWhere(bool Function(T) test) {
|
||||
final index = indexWhere(test);
|
||||
if (index != -1) {
|
||||
@@ -50,4 +43,27 @@ extension ListExt<T> on List<T> {
|
||||
) {
|
||||
return where(test).reduceOrNull(combine) ?? reduce(combine);
|
||||
}
|
||||
|
||||
/// from [algorithms.lowerBoundBy].
|
||||
int lowerBoundByKey<K extends Comparable<K>>(
|
||||
K Function(T element) keyOf,
|
||||
K key, [
|
||||
int start = 0,
|
||||
int? end,
|
||||
]) {
|
||||
end = RangeError.checkValidRange(start, end, length);
|
||||
var min = start;
|
||||
var max = end;
|
||||
while (min < max) {
|
||||
var mid = min + ((max - min) >> 1);
|
||||
var element = this[mid];
|
||||
var comp = keyOf(element).compareTo(key);
|
||||
if (comp < 0) {
|
||||
min = mid + 1;
|
||||
} else {
|
||||
max = mid;
|
||||
}
|
||||
}
|
||||
return min;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user