|
@@ -50,7 +50,7 @@ namespace Invercargill {
|
|
return count;
|
|
return count;
|
|
}
|
|
}
|
|
|
|
|
|
- public virtual bool any(PredicateDelegate<T> predicate) {
|
|
|
|
|
|
+ public virtual bool any(PredicateDelegate<T> predicate = (i) => true) {
|
|
var result = false;
|
|
var result = false;
|
|
iterate_if(i => {
|
|
iterate_if(i => {
|
|
if(predicate(i)) {
|
|
if(predicate(i)) {
|
|
@@ -67,7 +67,7 @@ namespace Invercargill {
|
|
return !any(i => !predicate(i));
|
|
return !any(i => !predicate(i));
|
|
}
|
|
}
|
|
|
|
|
|
- public virtual bool no(PredicateDelegate<T> predicate) {
|
|
|
|
|
|
+ public virtual bool no(PredicateDelegate<T> predicate = (i) => true) {
|
|
return all(i => !predicate(i));
|
|
return all(i => !predicate(i));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -146,24 +146,24 @@ namespace Invercargill {
|
|
return concat(seq);
|
|
return concat(seq);
|
|
}
|
|
}
|
|
|
|
|
|
- public virtual T first() throws SequenceError {
|
|
|
|
- var tracker = get_tracker();
|
|
|
|
|
|
+ public virtual T first(owned PredicateDelegate<T>? predicate = null) throws SequenceError {
|
|
|
|
+ var tracker = predicate == null ? get_tracker() : where((owned)predicate).get_tracker();
|
|
if(tracker.has_next()) {
|
|
if(tracker.has_next()) {
|
|
return tracker.get_next();
|
|
return tracker.get_next();
|
|
}
|
|
}
|
|
throw new SequenceError.NO_ELEMENTS("The sequence contains no elements");
|
|
throw new SequenceError.NO_ELEMENTS("The sequence contains no elements");
|
|
}
|
|
}
|
|
|
|
|
|
- public virtual T? first_or_default() {
|
|
|
|
- var tracker = get_tracker();
|
|
|
|
|
|
+ public virtual T? first_or_default(owned PredicateDelegate<T>? predicate = null) {
|
|
|
|
+ var tracker = predicate == null ? get_tracker() : where((owned)predicate).get_tracker();
|
|
if(tracker.has_next()) {
|
|
if(tracker.has_next()) {
|
|
return tracker.get_next();
|
|
return tracker.get_next();
|
|
}
|
|
}
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
- public virtual T single() throws SequenceError {
|
|
|
|
- var tracker = get_tracker();
|
|
|
|
|
|
+ public virtual T single(owned PredicateDelegate<T>? predicate = null) throws SequenceError {
|
|
|
|
+ var tracker = predicate == null ? get_tracker() : where((owned)predicate).get_tracker();
|
|
if(tracker.has_next()) {
|
|
if(tracker.has_next()) {
|
|
var item = tracker.get_next();
|
|
var item = tracker.get_next();
|
|
if(tracker.has_next()) {
|
|
if(tracker.has_next()) {
|
|
@@ -174,8 +174,8 @@ namespace Invercargill {
|
|
throw new SequenceError.NO_ELEMENTS("The sequence contains no elements");
|
|
throw new SequenceError.NO_ELEMENTS("The sequence contains no elements");
|
|
}
|
|
}
|
|
|
|
|
|
- public virtual T single_or_default() throws SequenceError {
|
|
|
|
- var tracker = get_tracker();
|
|
|
|
|
|
+ public virtual T single_or_default(owned PredicateDelegate<T>? predicate = null) throws SequenceError {
|
|
|
|
+ var tracker = predicate == null ? get_tracker() : where((owned)predicate).get_tracker();
|
|
if(tracker.has_next()) {
|
|
if(tracker.has_next()) {
|
|
var item = tracker.get_next();
|
|
var item = tracker.get_next();
|
|
if(tracker.has_next()) {
|
|
if(tracker.has_next()) {
|