semantic-typescript 0.1.4 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/collectable.d.ts +84 -0
- package/dist/collectable.js +476 -0
- package/dist/collector.d.ts +24 -0
- package/dist/collector.js +63 -0
- package/dist/factory.d.ts +11 -0
- package/dist/factory.js +248 -0
- package/dist/guard.d.ts +23 -0
- package/dist/guard.js +85 -0
- package/dist/hook.d.ts +2 -0
- package/dist/hook.js +64 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +9 -0
- package/dist/optional.d.ts +18 -0
- package/dist/optional.js +65 -0
- package/dist/semantic.d.ts +9 -289
- package/dist/semantic.js +38 -1733
- package/dist/statistics.d.ts +101 -0
- package/dist/statistics.js +765 -0
- package/dist/symbol.d.ts +10 -0
- package/dist/symbol.js +10 -0
- package/dist/utility.d.ts +49 -0
- package/dist/utility.js +17 -0
- package/package.json +3 -2
- package/readme.cn.md +102 -57
- package/readme.de.md +120 -73
- package/readme.es.md +114 -67
- package/readme.fr.md +117 -70
- package/readme.jp.md +115 -70
- package/readme.kr.md +116 -71
- package/readme.md +114 -67
- package/readme.ru.md +115 -70
- package/readme.tw.md +131 -69
package/readme.md
CHANGED
|
@@ -15,34 +15,40 @@ npm install semantic-typescript
|
|
|
15
15
|
## Basic Types
|
|
16
16
|
|
|
17
17
|
| Type | Description |
|
|
18
|
-
|
|
19
|
-
| `Invalid<T>` | Type
|
|
20
|
-
| `Valid<T>` | Type
|
|
21
|
-
| `MaybeInvalid<T>` | Type that may be null or undefined |
|
|
18
|
+
|------|-------------|
|
|
19
|
+
| `Invalid<T>` | Type that extends `null` or `undefined` |
|
|
20
|
+
| `Valid<T>` | Type that excludes `null` and `undefined` |
|
|
21
|
+
| `MaybeInvalid<T>` | Type that may be `null` or `undefined` |
|
|
22
22
|
| `Primitive` | Collection of primitive types |
|
|
23
23
|
| `MaybePrimitive<T>` | Type that may be a primitive type |
|
|
24
|
-
| `OptionalSymbol` | Symbol identifier
|
|
25
|
-
| `SemanticSymbol` | Symbol identifier
|
|
26
|
-
| `CollectorsSymbol` | Symbol identifier
|
|
27
|
-
| `CollectableSymbol` | Symbol identifier
|
|
28
|
-
| `OrderedCollectableSymbol` | Symbol identifier
|
|
29
|
-
| `WindowCollectableSymbol` | Symbol identifier
|
|
30
|
-
| `StatisticsSymbol` | Symbol identifier
|
|
31
|
-
| `NumericStatisticsSymbol` | Symbol identifier
|
|
32
|
-
| `BigIntStatisticsSymbol` | Symbol identifier
|
|
33
|
-
| `UnorderedCollectableSymbol` | Symbol identifier
|
|
34
|
-
|
|
35
|
-
|
|
24
|
+
| `OptionalSymbol` | Symbol identifier of the `Optional` class |
|
|
25
|
+
| `SemanticSymbol` | Symbol identifier of the `Semantic` class |
|
|
26
|
+
| `CollectorsSymbol` | Symbol identifier of the `Collector` class |
|
|
27
|
+
| `CollectableSymbol` | Symbol identifier of the `Collectable` class |
|
|
28
|
+
| `OrderedCollectableSymbol` | Symbol identifier of the `OrderedCollectable` class |
|
|
29
|
+
| `WindowCollectableSymbol` | Symbol identifier of the `WindowCollectable` class |
|
|
30
|
+
| `StatisticsSymbol` | Symbol identifier of the `Statistics` class |
|
|
31
|
+
| `NumericStatisticsSymbol` | Symbol identifier of the `NumericStatistics` class |
|
|
32
|
+
| `BigIntStatisticsSymbol` | Symbol identifier of the `BigIntStatistics` class |
|
|
33
|
+
| `UnorderedCollectableSymbol` | Symbol identifier of the `UnorderedCollectable` class |
|
|
34
|
+
|
|
35
|
+
## Functional Interfaces
|
|
36
|
+
|
|
37
|
+
| Interface | Description |
|
|
38
|
+
|-----------|-------------|
|
|
39
|
+
| `Runnable` | Function with no parameters and no return value |
|
|
40
|
+
| `Supplier<R>` | Function with no parameters returning `R` |
|
|
36
41
|
| `Functional<T, R>` | Single-parameter transformation function |
|
|
37
|
-
| `Predicate<T>` | Single-parameter predicate function |
|
|
38
42
|
| `BiFunctional<T, U, R>` | Two-parameter transformation function |
|
|
39
|
-
| `BiPredicate<T, U>` | Two-parameter predicate function |
|
|
40
|
-
| `Comparator<T>` | Comparison function |
|
|
41
43
|
| `TriFunctional<T, U, V, R>` | Three-parameter transformation function |
|
|
44
|
+
| `Predicate<T>` | Single-parameter predicate function |
|
|
45
|
+
| `BiPredicate<T, U>` | Two-parameter predicate function |
|
|
46
|
+
| `TriPredicate<T, U, V>` | Three-parameter predicate function |
|
|
42
47
|
| `Consumer<T>` | Single-parameter consumer function |
|
|
43
48
|
| `BiConsumer<T, U>` | Two-parameter consumer function |
|
|
44
49
|
| `TriConsumer<T, U, V>` | Three-parameter consumer function |
|
|
45
|
-
| `
|
|
50
|
+
| `Comparator<T>` | Two-parameter comparison function |
|
|
51
|
+
| `Generator<T>` | Generator function (core and foundation) |
|
|
46
52
|
|
|
47
53
|
```typescript
|
|
48
54
|
// Type usage examples
|
|
@@ -125,7 +131,7 @@ const nullableOpt = Optional.ofNullable<string>(null);
|
|
|
125
131
|
const nonNullOpt = Optional.ofNonNull("hello");
|
|
126
132
|
|
|
127
133
|
presentOpt.ifPresent(val => console.log(val)); // Outputs 42
|
|
128
|
-
console.log(emptyOpt.
|
|
134
|
+
console.log(emptyOpt.get(100)); // Outputs 100
|
|
129
135
|
```
|
|
130
136
|
|
|
131
137
|
### Collector Factory Methods
|
|
@@ -136,15 +142,34 @@ console.log(emptyOpt.orElse(100)); // Outputs 100
|
|
|
136
142
|
| `Collector.shortable(identity, interruptor, accumulator, finisher)` | Create an interruptible collector | O(1) | O(1) |
|
|
137
143
|
|
|
138
144
|
```typescript
|
|
139
|
-
// Collector
|
|
140
|
-
const
|
|
141
|
-
() => 0,
|
|
142
|
-
(sum, num) => sum + num,
|
|
143
|
-
result => result
|
|
144
|
-
);
|
|
145
|
+
// Collector conversion examples
|
|
146
|
+
const numbers = from([3, 1, 4, 1, 5, 9, 2, 6, 5]);
|
|
145
147
|
|
|
146
|
-
|
|
147
|
-
const
|
|
148
|
+
// Performance first: use unordered collector
|
|
149
|
+
const unordered = numbers
|
|
150
|
+
.filter(n => n > 3)
|
|
151
|
+
.toUnoredered();
|
|
152
|
+
|
|
153
|
+
// Sorting needed: use ordered collector
|
|
154
|
+
const ordered = numbers.sorted();
|
|
155
|
+
|
|
156
|
+
// Counts the number of elements
|
|
157
|
+
let count = Collector.full(
|
|
158
|
+
() => 0, // Initial value
|
|
159
|
+
(accumulator, element) => accumulator + element, // Accumulate
|
|
160
|
+
(accumulator) => accumulator // Finish
|
|
161
|
+
);
|
|
162
|
+
count.collect(from([1,2,3,4,5])); // Counts from a stream
|
|
163
|
+
count.collect([1,2,3,4,5]); // Counts from an iterable object
|
|
164
|
+
|
|
165
|
+
let find = Collector.shortable(
|
|
166
|
+
() => Optional.empty(), // Initial value
|
|
167
|
+
(element, index, accumulator) => accumulator.isPresent(), // Interrupt
|
|
168
|
+
(accumulator, element, index) => Optional.of(element), // Accumulate
|
|
169
|
+
(accumulator) => accumulator // Finish
|
|
170
|
+
);
|
|
171
|
+
find.collect(from([1,2,3,4,5])); // Finds the first element
|
|
172
|
+
find.collect([1,2,3,4,5]); // Finds the first element
|
|
148
173
|
```
|
|
149
174
|
|
|
150
175
|
### Semantic Factory Methods
|
|
@@ -168,7 +193,7 @@ blob(someBlob, 1024n)
|
|
|
168
193
|
.toUnordered()
|
|
169
194
|
.write(WritableStream)
|
|
170
195
|
.then(callback) // Write stream successful
|
|
171
|
-
.catch(
|
|
196
|
+
.catch(callback); // Write stream failed
|
|
172
197
|
|
|
173
198
|
// Create an empty stream, won't execute until concatenated with other streams
|
|
174
199
|
empty<string>()
|
|
@@ -229,6 +254,7 @@ const result = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
|
|
|
229
254
|
.map(n => n * 2) // Multiply by 2
|
|
230
255
|
.skip(1) // Skip the first
|
|
231
256
|
.limit(3) // Limit to 3 elements
|
|
257
|
+
.toUnordered() // Convert to unordered collector
|
|
232
258
|
.toArray(); // Convert to array
|
|
233
259
|
// Result: [8, 12, 20]
|
|
234
260
|
|
|
@@ -242,47 +268,65 @@ const complexResult = range(1, 100, 1)
|
|
|
242
268
|
.toArray(); // Convert to array
|
|
243
269
|
```
|
|
244
270
|
|
|
245
|
-
##
|
|
271
|
+
## Semantic Conversion Methods
|
|
246
272
|
|
|
247
273
|
| Method | Description | Time Complexity | Space Complexity |
|
|
248
|
-
|
|
249
|
-
| `
|
|
274
|
+
|------------|------------|------------|------------|
|
|
275
|
+
| `sorted()` | Convert to ordered collector | O(n log n) | O(n) |
|
|
276
|
+
| `toUnordered()` | Convert to unordered collector | O(1) | O(1) |
|
|
250
277
|
| `toOrdered()` | Convert to ordered collector | O(1) | O(1) |
|
|
251
|
-
| `
|
|
278
|
+
| `toNumericStatistics()` | Convert to numeric statistics | O(n) | O(1) |
|
|
279
|
+
| `toBigintStatistics()` | Convert to bigint statistics | O(n) | O(1) |
|
|
252
280
|
| `toWindow()` | Convert to window collector | O(1) | O(1) |
|
|
253
|
-
| `
|
|
254
|
-
| `
|
|
281
|
+
| `toCollectable()` | Convert to `UnorderdCollectable` | O(n) | O(1) |
|
|
282
|
+
| `toCollectable(mapper)` | Convert to customized collectable | O(n) | O(1) |
|
|
255
283
|
|
|
256
284
|
```typescript
|
|
257
|
-
//
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
//
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
//
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
//
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
.
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
285
|
+
// Convert to an ascending sorted array
|
|
286
|
+
from([6,4,3,5,2]) // Creates a stream
|
|
287
|
+
.sorted() // Sorts the stream in ascending order
|
|
288
|
+
.toArray(); // [2, 3, 4, 5, 6]
|
|
289
|
+
|
|
290
|
+
// Convert to a descending sorted array
|
|
291
|
+
from([6,4,3,5,2]) // Creates a stream
|
|
292
|
+
.soted((a, b) => b - a) // Sorts the stream in descending order
|
|
293
|
+
.toArray(); // [6, 5, 4, 3, 2]
|
|
294
|
+
|
|
295
|
+
// Redirect to a reversed array
|
|
296
|
+
from([6,4,3,5,2])
|
|
297
|
+
.redirect((element, index) => -index) // Redirects to reversed order
|
|
298
|
+
.toOrderd() // Keeps the redirected order
|
|
299
|
+
.toArray(); // [2, 5, 3, 4, 6]
|
|
300
|
+
|
|
301
|
+
// Ignore redirections to reverse array
|
|
302
|
+
from([6,4,3,5,2])
|
|
303
|
+
.redirect((element, index) => -index) // Redirects to reversed order
|
|
304
|
+
.toUnorderd() // Drops the redirected order. This operation will ignore `redirect`, `reverse`, `shuffle` and `translate` operations
|
|
305
|
+
.toArray(); // [2, 5, 3, 4, 6]
|
|
306
|
+
|
|
307
|
+
// Reverse the stream into an array
|
|
308
|
+
from([6, 4, 3, 5, 2])
|
|
309
|
+
.reverse() // Reverses the stream
|
|
310
|
+
.toOrdered() // Guarantees the reversed order
|
|
311
|
+
.toArray(); // [2, 5, 3, 4, 6]
|
|
312
|
+
|
|
313
|
+
// Overwrite the shuffled stream into an array
|
|
314
|
+
from([6, 4, 3, 5, 2])
|
|
315
|
+
.shuffle() // Shuffles the stream
|
|
316
|
+
.sorted() // Overwrites the shuffled order. This operation will overwrite `redirect`, `reverse`, `shuffle` and `translate` operations
|
|
317
|
+
.toArray(); // [2, 5, 3, 4, 6]
|
|
318
|
+
|
|
319
|
+
// Convert to window collector
|
|
320
|
+
from([6, 4, 3, 5, 2]).toWindow();
|
|
321
|
+
|
|
322
|
+
// Convert to numeric statistics
|
|
323
|
+
from([6, 4, 3, 5, 2]).toNumericStatistics();
|
|
324
|
+
|
|
325
|
+
// Convert to bigint statistics
|
|
326
|
+
from([6n, 4n, 3n, 5n, 2n]).toBigintStatistics();
|
|
327
|
+
|
|
328
|
+
// Defines a customized collector to collect data
|
|
329
|
+
let customizedCollector = from([1, 2, 3, 4, 5]).toCollectable((generator: Generator<E>) => new CustomizedCollector(generator));
|
|
286
330
|
```
|
|
287
331
|
|
|
288
332
|
## Collectable Collection Methods
|
|
@@ -336,7 +380,7 @@ const grouped = data.groupBy(
|
|
|
336
380
|
const sum = data.reduce(0, (acc, n) => acc + n); // 30
|
|
337
381
|
|
|
338
382
|
// Output operations
|
|
339
|
-
data.join(", "); // "2, 4, 6, 8, 10"
|
|
383
|
+
data.join(", "); // "[2, 4, 6, 8, 10]"
|
|
340
384
|
```
|
|
341
385
|
|
|
342
386
|
## Statistical Analysis Methods
|
|
@@ -423,4 +467,7 @@ const bigIntStats = data
|
|
|
423
467
|
3. **Memory Usage**: Sorting operations require O(n) additional space
|
|
424
468
|
4. **Real-time Data**: Semantic streams are suitable for processing real-time data and support asynchronous data sources
|
|
425
469
|
|
|
426
|
-
|
|
470
|
+
|
|
471
|
+
This library provides TypeScript developers with powerful and flexible streaming capabilities, combining the benefits of functional programming with type safety guarantees.
|
|
472
|
+
|
|
473
|
+
|
package/readme.ru.md
CHANGED
|
@@ -15,34 +15,40 @@ npm install semantic-typescript
|
|
|
15
15
|
## Базовые типы
|
|
16
16
|
|
|
17
17
|
| Тип | Описание |
|
|
18
|
-
|
|
19
|
-
| `Invalid<T>` | Тип, расширяющий null или undefined |
|
|
20
|
-
| `Valid<T>` | Тип, исключающий null и undefined |
|
|
21
|
-
| `MaybeInvalid<T>` | Тип, который может быть null или undefined |
|
|
22
|
-
| `Primitive` |
|
|
23
|
-
| `MaybePrimitive<T>` | Тип, который может быть
|
|
24
|
-
| `OptionalSymbol` | Символьный идентификатор
|
|
25
|
-
| `SemanticSymbol` | Символьный идентификатор
|
|
26
|
-
| `CollectorsSymbol` | Символьный идентификатор
|
|
27
|
-
| `CollectableSymbol` | Символьный идентификатор
|
|
28
|
-
| `OrderedCollectableSymbol` | Символьный идентификатор
|
|
29
|
-
| `WindowCollectableSymbol` | Символьный идентификатор
|
|
30
|
-
| `StatisticsSymbol` | Символьный идентификатор
|
|
31
|
-
| `NumericStatisticsSymbol` | Символьный идентификатор
|
|
32
|
-
| `BigIntStatisticsSymbol` | Символьный идентификатор
|
|
33
|
-
| `UnorderedCollectableSymbol` | Символьный идентификатор
|
|
34
|
-
|
|
35
|
-
|
|
18
|
+
|------|-------------|
|
|
19
|
+
| `Invalid<T>` | Тип, расширяющий `null` или `undefined` |
|
|
20
|
+
| `Valid<T>` | Тип, исключающий `null` и `undefined` |
|
|
21
|
+
| `MaybeInvalid<T>` | Тип, который может быть `null` или `undefined` |
|
|
22
|
+
| `Primitive` | Набор примитивных типов |
|
|
23
|
+
| `MaybePrimitive<T>` | Тип, который может быть примитивным |
|
|
24
|
+
| `OptionalSymbol` | Символьный идентификатор класса `Optional` |
|
|
25
|
+
| `SemanticSymbol` | Символьный идентификатор класса `Semantic` |
|
|
26
|
+
| `CollectorsSymbol` | Символьный идентификатор класса `Collector` |
|
|
27
|
+
| `CollectableSymbol` | Символьный идентификатор класса `Collectable` |
|
|
28
|
+
| `OrderedCollectableSymbol` | Символьный идентификатор класса `OrderedCollectable` |
|
|
29
|
+
| `WindowCollectableSymbol` | Символьный идентификатор класса `WindowCollectable` |
|
|
30
|
+
| `StatisticsSymbol` | Символьный идентификатор класса `Statistics` |
|
|
31
|
+
| `NumericStatisticsSymbol` | Символьный идентификатор класса `NumericStatistics` |
|
|
32
|
+
| `BigIntStatisticsSymbol` | Символьный идентификатор класса `BigIntStatistics` |
|
|
33
|
+
| `UnorderedCollectableSymbol` | Символьный идентификатор класса `UnorderedCollectable` |
|
|
34
|
+
|
|
35
|
+
## Функциональные интерфейсы
|
|
36
|
+
|
|
37
|
+
| Интерфейс | Описание |
|
|
38
|
+
|-----------|-------------|
|
|
39
|
+
| `Runnable` | Функция без параметров и без возвращаемого значения |
|
|
40
|
+
| `Supplier<R>` | Функция без параметров, возвращающая `R` |
|
|
36
41
|
| `Functional<T, R>` | Функция преобразования с одним параметром |
|
|
37
|
-
| `Predicate<T>` | Предикатная функция с одним параметром |
|
|
38
42
|
| `BiFunctional<T, U, R>` | Функция преобразования с двумя параметрами |
|
|
39
|
-
| `BiPredicate<T, U>` | Предикатная функция с двумя параметрами |
|
|
40
|
-
| `Comparator<T>` | Функция сравнения |
|
|
41
43
|
| `TriFunctional<T, U, V, R>` | Функция преобразования с тремя параметрами |
|
|
42
|
-
| `
|
|
43
|
-
| `
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
44
|
+
| `Predicate<T>` | Предикатная функция с одним параметром |
|
|
45
|
+
| `BiPredicate<T, U>` | Предикатная функция с двумя параметрами |
|
|
46
|
+
| `TriPredicate<T, U, V>` | Предикатная функция с тремя параметрами |
|
|
47
|
+
| `Consumer<T>` | Функция-потребитель с одним параметром |
|
|
48
|
+
| `BiConsumer<T, U>` | Функция-потребитель с двумя параметрами |
|
|
49
|
+
| `TriConsumer<T, U, V>` | Функция-потребитель с тремя параметрами |
|
|
50
|
+
| `Comparator<T>` | Функция сравнения с двумя параметрами |
|
|
51
|
+
| `Generator<T>` | Генераторная функция (ядро и основа) |
|
|
46
52
|
|
|
47
53
|
```typescript
|
|
48
54
|
// Примеры использования типов
|
|
@@ -136,15 +142,34 @@ console.log(emptyOpt.orElse(100)); // Выводит 100
|
|
|
136
142
|
| `Collector.shortable(identity, interruptor, accumulator, finisher)` | Создает прерываемый сборщик | O(1) | O(1) |
|
|
137
143
|
|
|
138
144
|
```typescript
|
|
139
|
-
// Примеры
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
)
|
|
145
|
+
// Примеры преобразования коллекторов
|
|
146
|
+
const numbers = from([3, 1, 4, 1, 5, 9, 2, 6, 5]);
|
|
147
|
+
|
|
148
|
+
// Производительность в приоритете: используем неупорядоченный коллектор
|
|
149
|
+
const unordered = numbers
|
|
150
|
+
.filter(n => n > 3)
|
|
151
|
+
.toUnoredered();
|
|
152
|
+
|
|
153
|
+
// Нужна сортировка: используем упорядоченный коллектор
|
|
154
|
+
const ordered = numbers.sorted();
|
|
145
155
|
|
|
146
|
-
|
|
147
|
-
|
|
156
|
+
// Подсчитывает количество элементов
|
|
157
|
+
let count = Collector.full(
|
|
158
|
+
() => 0, // Начальное значение
|
|
159
|
+
(accumulator, element) => accumulator + element, // Аккумулировать
|
|
160
|
+
(accumulator) => accumulator // Завершить
|
|
161
|
+
);
|
|
162
|
+
count.collect(from([1,2,3,4,5])); // Считает из потока
|
|
163
|
+
count.collect([1,2,3,4,5]); // Считает из итерируемого объекта
|
|
164
|
+
|
|
165
|
+
let find = Collector.shortable(
|
|
166
|
+
() => Optional.empty(), // Начальное значение
|
|
167
|
+
(element, index, accumulator) => accumulator.isPresent(), // Прервать
|
|
168
|
+
(accumulator, element, index) => Optional.of(element), // Аккумулировать
|
|
169
|
+
(accumulator) => accumulator // Завершить
|
|
170
|
+
);
|
|
171
|
+
find.collect(from([1,2,3,4,5])); // Находит первый элемент
|
|
172
|
+
find.collect([1,2,3,4,5]); // Находит первый элемент
|
|
148
173
|
```
|
|
149
174
|
|
|
150
175
|
### Фабричные методы Semantic
|
|
@@ -155,6 +180,7 @@ const total = numbers.toUnoredered().collect(sumCollector); // 15
|
|
|
155
180
|
| `empty<E>()` | Создает пустой поток | O(1) | O(1) |
|
|
156
181
|
| `fill<E>(element, count)` | Создает заполненный поток | O(n) | O(1) |
|
|
157
182
|
| `from<E>(iterable)` | Создает поток из итерируемого объекта | O(1) | O(1) |
|
|
183
|
+
| `generate<E>(element, interrupt)` | Создает поток из генератора | O(1) | O(1) |
|
|
158
184
|
| `interval(period, delay?)` | Создает регулярный интервальный поток | O(1)* | O(1) |
|
|
159
185
|
| `iterate<E>(generator)` | Создает поток из генератора | O(1) | O(1) |
|
|
160
186
|
| `range(start, end, step)` | Создает числовой диапазонный поток | O(n) | O(1) |
|
|
@@ -231,6 +257,7 @@ const result = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
|
|
|
231
257
|
.map(n => n * 2) // Умножает на 2
|
|
232
258
|
.skip(1) // Пропускает первый
|
|
233
259
|
.limit(3) // Ограничивает 3 элементами
|
|
260
|
+
.toUnordered() // Преобразует в неупорядоченный сборщик
|
|
234
261
|
.toArray(); // Преобразует в массив
|
|
235
262
|
// Результат: [8, 12, 20]
|
|
236
263
|
|
|
@@ -244,47 +271,65 @@ const complexResult = range(1, 100, 1)
|
|
|
244
271
|
.toArray(); // Преобразует в массив
|
|
245
272
|
```
|
|
246
273
|
|
|
247
|
-
##
|
|
274
|
+
## Семантические методы преобразования
|
|
248
275
|
|
|
249
276
|
| Метод | Описание | Временная сложность | Пространственная сложность |
|
|
250
|
-
|
|
251
|
-
| `
|
|
252
|
-
| `
|
|
253
|
-
| `
|
|
254
|
-
| `
|
|
255
|
-
| `
|
|
256
|
-
| `
|
|
277
|
+
|------------|------------|------------|------------|
|
|
278
|
+
| `sorted()` | Преобразовать в упорядоченный коллектор | O(n log n) | O(n) |
|
|
279
|
+
| `toUnordered()` | Преобразовать в неупорядоченный коллектор | O(1) | O(1) |
|
|
280
|
+
| `toOrdered()` | Преобразовать в упорядоченный коллектор | O(1) | O(1) |
|
|
281
|
+
| `toNumericStatistics()` | Преобразовать в числовую статистику | O(n) | O(1) |
|
|
282
|
+
| `toBigintStatistics()` | Преобразовать в статистику BigInt | O(n) | O(1) |
|
|
283
|
+
| `toWindow()` | Преобразовать в коллектор окон | O(1) | O(1) |
|
|
284
|
+
| `toCollectable()` | Преобразовать в `UnorderdCollectable` | O(n) | O(1) |
|
|
285
|
+
| `toCollectable(mapper)` | Преобразовать в пользовательский коллектор | O(n) | O(1) |
|
|
257
286
|
|
|
258
287
|
```typescript
|
|
259
|
-
//
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
//
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
//
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
//
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
.
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
+
// Преобразовать в массив, отсортированный по возрастанию
|
|
289
|
+
from([6,4,3,5,2]) // Создаёт поток
|
|
290
|
+
.sorted() // Сортирует поток по возрастанию
|
|
291
|
+
.toArray(); // [2, 3, 4, 5, 6]
|
|
292
|
+
|
|
293
|
+
// Преобразовать в массив, отсортированный по убыванию
|
|
294
|
+
from([6,4,3,5,2]) // Создаёт поток
|
|
295
|
+
.soted((a, b) => b - a) // Сортирует поток по убыванию
|
|
296
|
+
.toArray(); // [6, 5, 4, 3, 2]
|
|
297
|
+
|
|
298
|
+
// Перенаправить в обратный массив
|
|
299
|
+
from([6,4,3,5,2])
|
|
300
|
+
.redirect((element, index) => -index) // Перенаправляет в обратном порядке
|
|
301
|
+
.toOrderd() // Сохраняет перенаправленный порядок
|
|
302
|
+
.toArray(); // [2, 5, 3, 4, 6]
|
|
303
|
+
|
|
304
|
+
// Игнорировать перенаправления для обращения массива
|
|
305
|
+
from([6,4,3,5,2])
|
|
306
|
+
.redirect((element, index) => -index) // Перенаправляет в обратном порядке
|
|
307
|
+
.toUnorderd() // Удаляет перенаправленный порядок. Эта операция игнорирует `redirect`, `reverse`, `shuffle` и `translate`
|
|
308
|
+
.toArray(); // [2, 5, 3, 4, 6]
|
|
309
|
+
|
|
310
|
+
// Обратить поток в массив
|
|
311
|
+
from([6, 4, 3, 5, 2])
|
|
312
|
+
.reverse() // Обращает поток
|
|
313
|
+
.toOrdered() // Гарантирует обращённый порядок
|
|
314
|
+
.toArray(); // [2, 5, 3, 4, 6]
|
|
315
|
+
|
|
316
|
+
// Перезаписать перетасованный поток в массив
|
|
317
|
+
from([6, 4, 3, 5, 2])
|
|
318
|
+
.shuffle() // Перемешивает поток
|
|
319
|
+
.sorted() // Перезаписывает перетасованный порядок. Эта операция перезаписывает `redirect`, `reverse`, `shuffle` и `translate`
|
|
320
|
+
.toArray(); // [2, 5, 3, 4, 6]
|
|
321
|
+
|
|
322
|
+
// Преобразовать в коллектор окон
|
|
323
|
+
from([6, 4, 3, 5, 2]).toWindow();
|
|
324
|
+
|
|
325
|
+
// Преобразовать в числовую статистику
|
|
326
|
+
from([6, 4, 3, 5, 2]).toNumericStatistics();
|
|
327
|
+
|
|
328
|
+
// Преобразовать в статистику BigInt
|
|
329
|
+
from([6n, 4n, 3n, 5n, 2n]).toBigintStatistics();
|
|
330
|
+
|
|
331
|
+
// Определить пользовательский коллектор для сбора данных
|
|
332
|
+
let customizedCollector = from([1, 2, 3, 4, 5]).toCollectable((generator: Generator<E>) => new CustomizedCollector(generator));
|
|
288
333
|
```
|
|
289
334
|
|
|
290
335
|
## Методы сбора Collectable
|