interface VariantSetBase<T,Tp>
undocumented
Companion namespace: VariantSetBase
Extends: FastIterable<T>
Implemented by: RSetBase<T,Tp>, VariantSetBase.NonEmpty<T,Tp>
Type parameters
| Name | Constraints | Default | Description |
|---|---|---|---|
| T | undocumented | ||
| Tp | VariantSetBase.Types | VariantSetBase.Types | undocumented |
Properties
Methods
[Symbol.iterator]
Returns a FastIterator instance used to iterate over the values of this Iterable.
[Symbol.iterator]FastIterator instance used to iterate over the values of this Iterable.assumeNonEmpty
Returns the same collection typed as non-empty.
assumeNonEmptyDefinition
assumeNonEmpty(): WithElem<Tp, T>['nonEmpty'];
RimbuError.EmptyCollectionAssumedNonEmptyError if the collection is empty
HashSet.empty().assumeNonEmpty() // => throws RimbuError.EmptyCollectionAssumedNonEmptyError
HashSet.from([[0, 1]]).assumeNonEmpty() // => List.NonEmpty(0, 1, 2)
difference
Returns a collection where each value of given other StreamSource is removed from this collection.
differenceother StreamSource is removed from this collection.Definition
difference<U = T>(other: StreamSource<RelatedTo<T, U>>): WithElem<Tp, T>['normal'];
Type parameters
| Name | Default | Description |
|---|---|---|
| U | T |
Parameters
| Name | Type | Description |
|---|---|---|
other | StreamSource<RelatedTo<T, U>> | a StreamSource containing values |
HashSet.of(1, 2, 3).difference(HashSet.of(1, 3)).toArray() // => [2]
filter
Returns a collection containing only those entries that satisfy given pred predicate.
filterpred predicate.Definitions
filter<TF extends T>(pred: (value: T, index: number, halt: () => void) => value is TF, options?: {
negate?: false | undefined;
}): WithElem<Tp, TF>['normal'];
filter<TF extends T>(pred: (value: T, index: number, halt: () => void) => value is TF, options: {
negate: true;
}): WithElem<Tp, Exclude<T, TF>>['normal'];
filter(pred: (value: T, index: number, halt: () => void) => boolean, options?: {
negate?: boolean;
}): WithElem<Tp, T>['normal'];
Type parameters
| Name | Constraints | Description |
|---|---|---|
| TF | T |
Parameters
| Name | Type | Description |
|---|---|---|
pred | (value: T, index: number, halt: () => void) => value is TF | a predicate function receiving: - value: the next value- index: the entry index- halt: a function that, when called, ensures no next elements are passed |
options | {negate?: false | undefined;} | (optional) an object containing the following properties: - negate: (default: false) when true will negate the predicate |
if the predicate is a type guard, the return type is automatically inferred
HashSet.of(1, 2, 3).filter(value < 3).toArray()
// => [1, 2]
forEach
Performs given function f for each value of the collection, using given state as initial traversal state.
forEachf for each value of the collection, using given state as initial traversal state.Definition
forEach(f: (value: T, index: number, halt: () => void) => void, options?: {
state?: TraverseState;
}): void;
Parameters
| Name | Type | Description |
|---|---|---|
f | (value: T, index: number, halt: () => void) => void | the function to perform for each element, receiving: - value: the next element- index: the index of the element- halt: a function that, if called, ensures that no new elements are passed |
options | {state?: TraverseState;} |
HashSet.of(1, 2, 3).forEach((value, i, halt) => {
console.log([value, i]);
if (i >= 1) halt();
})
// => logs [1, 0] [2, 1]
O(N)
has
Returns true if given value is in the collection.
hasvalue is in the collection.intersect
Returns a collection containing values that are both in this collection, and in the given other StreamSource.
intersectother StreamSource.Definition
intersect<U = T>(other: StreamSource<RelatedTo<T, U>>): WithElem<Tp, T>['normal'];
Type parameters
| Name | Default | Description |
|---|---|---|
| U | T |
Parameters
| Name | Type | Description |
|---|---|---|
other | StreamSource<RelatedTo<T, U>> | a StreamSource containing values |
HashSet.of(1, 2, 3).interface(HashSet.of(1, 3)).toArray() // => [1, 3]
nonEmpty
Returns true if there is at least one entry in the collection, and instructs the compiler to treat the collection as a .NonEmpty type.
nonEmptyDefinition
nonEmpty(): this is WithElem<Tp, T>['nonEmpty'];
const m: HashSet<number> = HashSet.of(1, 2, 2)
m.stream().first(0) // compiler allows fallback value since the Stream may be empty
if (m.nonEmpty()) {
m.stream().first(0) // compiler error: fallback value not allowed since Stream is not empty
}
remove
Returns the collection with given value removed.
removevalue removed.removeAll
Returns the collection with all values in the given values StreamSource removed.
removeAllvalues StreamSource removed.Definition
removeAll<U = T>(values: StreamSource<RelatedTo<T, U>>): WithElem<Tp, T>['normal'];
Type parameters
| Name | Default | Description |
|---|---|---|
| U | T |
Parameters
| Name | Type | Description |
|---|---|---|
values | StreamSource<RelatedTo<T, U>> | a StreamSource containing values to remove |
HashSet.of(1, 2, 3).removeAll([1, 3]).toArray()
// => [2]
stream
Returns a Stream containing all elements of this collection.
streamtoArray
Returns an array containing all values in this collection.
toArrayDefinition
toArray(): T[];
HashSet.of(1, 2, 3).toArray() // => [1, 2, 3]
O(log(N)) @note it is safe to mutate the returned array, however, the array elements are not copied, thus should be treated as read-only
toJSON
Returns a JSON representation of this collection.
toJSON