semantic-typescript 0.0.7 โ 0.1.4
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/semantic.d.ts +22 -5
- package/dist/semantic.js +106 -52
- package/package.json +53 -8
- package/readme.cn.md +360 -269
- package/readme.de.md +356 -264
- package/readme.es.md +357 -264
- package/readme.fr.md +357 -264
- package/readme.jp.md +362 -270
- package/readme.kr.md +361 -269
- package/readme.md +361 -270
- package/readme.ru.md +428 -0
- package/readme.tw.md +354 -263
package/readme.kr.md
CHANGED
|
@@ -1,335 +1,427 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Semantic-TypeScript ์คํธ๋ฆผ ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
์ปฌ๋ ์
, ์คํธ๋ฆผ, ์ํ์ค๋ฅผ ํจ์ํ ์คํ์ผ๋ก ๋ค๋ฃฐ ์ ์๋ ๊ตฌ์ฑ ์์๋ค์ ์ ๊ณตํ๋ฉฐ, ์ ๋ ฌ, ํํฐ๋ง, ๊ทธ๋ฃนํ, ํต๊ณ ๋ถ์ ๋ฑ์ ์ง์ํฉ๋๋ค.
|
|
3
|
+
## ์๊ฐ
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
Semantic-TypeScript๋ JavaScript GeneratorFunction, Java Stream ๋ฐ MySQL Index์์ ์๊ฐ์ ๋ฐ์ ํ๋์ ์ธ ์คํธ๋ฆผ ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํต์ฌ ์ค๊ณ๋ ๋ฐ์ดํฐ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ฌ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๊ฒ ํ์
์์ ์ฑ๊ณผ ํจ์ํ ์คํ์ผ์ ์คํธ๋ฆผ ์กฐ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
๊ธฐ์กด์ ๋๊ธฐ์ ์ฒ๋ฆฌ์ ๋ฌ๋ฆฌ Semantic์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ชจ๋๋ฅผ ์ฑํํฉ๋๋ค. ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์์ฑํ ๋, ํฐ๋ฏธ๋์ด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ์์ ์ ์
์คํธ๋ฆผ์ด `accept` ๋ฐ `interrupt` ์ฝ๋ฐฑ ํจ์๋ฅผ ์ธ์ ํธ์ถํ๋์ง์ ์ ์ ์ผ๋ก ์์กดํฉ๋๋ค. ์ด ์ค๊ณ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ, ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ ๋ฐ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ฐ์ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค.
|
|
9
8
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
- โ
์ ์ฒด์ ์ผ๋ก **ํ์
์์ ํ ์ ๋ค๋ฆญ(Type-safe Generics)**
|
|
13
|
-
- โ
**ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ** (map, filter, reduce ๋ฑ)
|
|
14
|
-
- โ
**์๋ฏธ๋ก ์ ๋ฐ์ดํฐ ์คํธ๋ฆผ(Semantic<E>)** - ์ง์ฐ ํ๊ฐ(Lazy Evaluation) ์ง์
|
|
15
|
-
- โ
์คํธ๋ฆผ์ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ก ๋ณํํ๋ **์ปฌ๋ ํฐ(Collectors)**
|
|
16
|
-
- โ
**์ ๋ ฌ๋(Sorted) ๋ฐ ๋น์ ๋ ฌ๋(Unordered) ์ปฌ๋ ํฐ** โ `toUnordered()`๋ **๊ฐ์ฅ ๋น ๋ฅด๋ฉฐ ์ ๋ ฌํ์ง ์์**
|
|
17
|
-
- โ
`sorted()`, `toOrdered()`, ๋น๊ต์(Comparator)๋ฅผ ํตํ **์ ๋ ฌ ๊ธฐ๋ฅ**
|
|
18
|
-
- โ
**ํต๊ณ ๋ถ์(Statistics)** (`NumericStatistics`, `BigIntStatistics` ๋ฑ)
|
|
19
|
-
- โ
**Optional<T>** โ null ๋๋ undefined ๊ฐ์ ์์ ํ๊ฒ ๋ค๋ฃจ๋ ๋ชจ๋๋(Monad)
|
|
20
|
-
- โ
**๋ฐ๋ณต์(Iterator) & ์์ฑ๊ธฐ(Generator)** ๊ธฐ๋ฐ ์ค๊ณ โ ๋๊ท๋ชจ ๋๋ ๋น๋๊ธฐ ๋ฐ์ดํฐ์๋ ์ ํฉ
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## ๐ฆ ์ค์น
|
|
9
|
+
## ์ค์น
|
|
25
10
|
|
|
26
11
|
```bash
|
|
27
12
|
npm install semantic-typescript
|
|
28
13
|
```
|
|
29
14
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
## ๐ง ํต์ฌ ๊ฐ๋
|
|
33
|
-
|
|
34
|
-
### 1. `Optional<T>` โ null/undefined ๊ฐ ์์ ํ๊ฒ ์ฒ๋ฆฌ
|
|
35
|
-
|
|
36
|
-
๊ฐ์ด null ๋๋ undefined ์ผ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ๋ชจ๋๋(Monadic) ์ปจํ
์ด๋์
๋๋ค.
|
|
37
|
-
|
|
38
|
-
#### ๋ฉ์๋:
|
|
39
|
-
|
|
40
|
-
| ๋ฉ์๋ | ์ค๋ช
| ์์ |
|
|
41
|
-
|--------|------|------|
|
|
42
|
-
| `of(value)` | ๊ฐ ๊ฐ์ธ๊ธฐ (null ๊ฐ๋ฅ) | `Optional.of(null)` |
|
|
43
|
-
| `ofNullable(v)` | null ํ์ฉํ์ฌ ๊ฐ์ธ๊ธฐ | `Optional.ofNullable(someVar)` |
|
|
44
|
-
| `ofNonNull(v)` | null์ด๋ฉด ์์ธ ๋ฐ์ | `Optional.ofNonNull(5)` |
|
|
45
|
-
| `get()` | ๊ฐ ๊ฐ์ ธ์ค๊ธฐ (์์ผ๋ฉด ์์ธ) | `opt.get()` |
|
|
46
|
-
| `getOrDefault(d)` | ๊ฐ ๊ฐ์ ธ์ค๊ธฐ ๋๋ ๊ธฐ๋ณธ๊ฐ | `opt.getOrDefault(0)` |
|
|
47
|
-
| `ifPresent(fn)` | ๊ฐ์ด ์์ผ๋ฉด ๋ถ์์ฉ ์คํ | `opt.ifPresent(x => console.log(x))` |
|
|
48
|
-
| `map(fn)` | ๊ฐ์ด ์์ผ๋ฉด ๋ณํ | `opt.map(x => x + 1)` |
|
|
49
|
-
| `filter(fn)` | ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ๋ง ์ ์ง | `opt.filter(x => x > 0)` |
|
|
50
|
-
| `isEmpty()` | ๋น์ด์๋์ง ํ์ธ | `opt.isEmpty()` |
|
|
51
|
-
| `isPresent()` | ๊ฐ์ด ์๋์ง ํ์ธ | `opt.isPresent()` |
|
|
15
|
+
## ๊ธฐ๋ณธ ํ์
|
|
52
16
|
|
|
53
|
-
|
|
17
|
+
| ํ์
| ์ค๋ช
|
|
|
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
|
+
| `Runnable` | ๋งค๊ฐ๋ณ์ ์์, ๋ฐํ๊ฐ ์๋ ํจ์ |
|
|
35
|
+
| `Supplier<R>` | ๋งค๊ฐ๋ณ์ ์์ด R์ ๋ฐํํ๋ ํจ์ |
|
|
36
|
+
| `Functional<T, R>` | ๋จ์ผ ๋งค๊ฐ๋ณ์ ๋ณํ ํจ์ |
|
|
37
|
+
| `Predicate<T>` | ๋จ์ผ ๋งค๊ฐ๋ณ์ ์กฐ๊ฑด ํจ์ |
|
|
38
|
+
| `BiFunctional<T, U, R>` | ์ด์ค ๋งค๊ฐ๋ณ์ ๋ณํ ํจ์ |
|
|
39
|
+
| `BiPredicate<T, U>` | ์ด์ค ๋งค๊ฐ๋ณ์ ์กฐ๊ฑด ํจ์ |
|
|
40
|
+
| `Comparator<T>` | ๋น๊ต ํจ์ |
|
|
41
|
+
| `TriFunctional<T, U, V, R>` | ์ผ์ค ๋งค๊ฐ๋ณ์ ๋ณํ ํจ์ |
|
|
42
|
+
| `Consumer<T>` | ๋จ์ผ ๋งค๊ฐ๋ณ์ ์๋น ํจ์ |
|
|
43
|
+
| `BiConsumer<T, U>` | ์ด์ค ๋งค๊ฐ๋ณ์ ์๋น ํจ์ |
|
|
44
|
+
| `TriConsumer<T, U, V>` | ์ผ์ค ๋งค๊ฐ๋ณ์ ์๋น ํจ์ |
|
|
45
|
+
| `Generator<T>` | ์์ฑ๊ธฐ ํจ์ |
|
|
54
46
|
|
|
55
47
|
```typescript
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
const opt = Optional.ofNullable(value);
|
|
61
|
-
|
|
62
|
-
const result = opt
|
|
63
|
-
.filter(v => v > 5)
|
|
64
|
-
.map(v => v * 2)
|
|
65
|
-
.getOrDefault(0);
|
|
66
|
-
|
|
67
|
-
console.log(result); // 20 ๋๋ 0
|
|
48
|
+
// ํ์
์ฌ์ฉ ์์
|
|
49
|
+
const predicate: Predicate<number> = (n) => n > 0;
|
|
50
|
+
const mapper: Functional<string, number> = (str) => str.length;
|
|
51
|
+
const comparator: Comparator<number> = (a, b) => a - b;
|
|
68
52
|
```
|
|
69
53
|
|
|
70
|
-
|
|
54
|
+
## ํ์
๊ฐ๋
|
|
55
|
+
|
|
56
|
+
| ํจ์ | ์ค๋ช
| ์๊ฐ ๋ณต์ก๋ | ๊ณต๊ฐ ๋ณต์ก๋ |
|
|
57
|
+
|------|------|------------|------------|
|
|
58
|
+
| `validate<T>(t: MaybeInvalid<T>): t is T` | ๊ฐ์ด null ๋๋ undefined๊ฐ ์๋์ ๊ฒ์ฆ | O(1) | O(1) |
|
|
59
|
+
| `invalidate<T>(t: MaybeInvalid<T>): t is null \| undefined` | ๊ฐ์ด null ๋๋ undefined์์ ๊ฒ์ฆ | O(1) | O(1) |
|
|
60
|
+
| `isBoolean(t: unknown): t is boolean` | ๋ถ๋ฆฌ์ธ ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
61
|
+
| `isString(t: unknown): t is string` | ๋ฌธ์์ด ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
62
|
+
| `isNumber(t: unknown): t is number` | ์ซ์ ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
63
|
+
| `isFunction(t: unknown): t is Function` | ํจ์ ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
64
|
+
| `isObject(t: unknown): t is object` | ๊ฐ์ฒด ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
65
|
+
| `isSymbol(t: unknown): t is symbol` | ์ฌ๋ณผ ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
66
|
+
| `isBigint(t: unknown): t is bigint` | BigInt ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
67
|
+
| `isPrimitive(t: unknown): t is Primitive` | ๊ธฐ๋ณธ ํ์
์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
68
|
+
| `isIterable(t: unknown): t is Iterable<unknown>` | ๋ฐ๋ณต ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
69
|
+
| `isOptional(t: unknown): t is Optional<unknown>` | Optional ์ธ์คํด์ค ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
70
|
+
| `isSemantic(t: unknown): t is Semantic<unknown>` | Semantic ์ธ์คํด์ค ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
71
|
+
| `isCollector(t: unknown): t is Collector<unknown, unknown, unknown>` | Collector ์ธ์คํด์ค ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
72
|
+
| `isCollectable(t: unknown): t is Collectable<unknown>` | Collectable ์ธ์คํด์ค ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
73
|
+
| `isOrderedCollectable(t: unknown): t is OrderedCollectable<unknown>` | OrderedCollectable ์ธ์คํด์ค ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
74
|
+
| `isWindowCollectable(t: unknown): t is WindowCollectable<unknown>` | WindowCollectable ์ธ์คํด์ค ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
75
|
+
| `isUnorderedCollectable(t: unknown): t is UnorderedCollectable<unknown>` | UnorderedCollectable ์ธ์คํด์ค ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
76
|
+
| `isStatistics(t: unknown): t is Statistics<unknown, number \| bigint>` | Statistics ์ธ์คํด์ค ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
77
|
+
| `isNumericStatistics(t: unknown): t is NumericStatistics<unknown>` | NumericStatistics ์ธ์คํด์ค ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
78
|
+
| `isBigIntStatistics(t: unknown): t is BigIntStatistics<unknown>` | BigIntStatistics ์ธ์คํด์ค ์ฌ๋ถ ํ์ธ | O(1) | O(1) |
|
|
71
79
|
|
|
72
|
-
|
|
80
|
+
```typescript
|
|
81
|
+
// ํ์
๊ฐ๋ ์ฌ์ฉ ์์
|
|
82
|
+
const value: unknown = "hello";
|
|
73
83
|
|
|
74
|
-
|
|
84
|
+
if (isString(value)) {
|
|
85
|
+
console.log(value.length); // ํ์
์์ , value๋ string์ผ๋ก ์ถ๋ก
|
|
86
|
+
}
|
|
75
87
|
|
|
76
|
-
|
|
88
|
+
if (isOptional(someValue)) {
|
|
89
|
+
someValue.ifPresent(val => console.log(val));
|
|
90
|
+
}
|
|
91
|
+
```
|
|
77
92
|
|
|
78
|
-
|
|
93
|
+
## ์ ํธ๋ฆฌํฐ ํจ์
|
|
79
94
|
|
|
80
|
-
| ํจ์ | ์ค๋ช
|
|
|
81
|
-
|
|
82
|
-
| `
|
|
83
|
-
| `
|
|
84
|
-
| `fill(element, count)` | ์์๋ฅผ N๋ฒ ๋ฐ๋ณต | `fill('a', 3n)` |
|
|
85
|
-
| `iterate(gen)` | ์ฌ์ฉ์ ์ ์ ์์ฑ๊ธฐ ํจ์ ์ฌ์ฉ | `iterate(genFn)` |
|
|
95
|
+
| ํจ์ | ์ค๋ช
| ์๊ฐ ๋ณต์ก๋ | ๊ณต๊ฐ ๋ณต์ก๋ |
|
|
96
|
+
|------|------|------------|------------|
|
|
97
|
+
| `useCompare<T>(t1: T, t2: T): number` | ๋ฒ์ฉ ๋น๊ต ํจ์ | O(1) | O(1) |
|
|
98
|
+
| `useRandom<T = number \| bigint>(index: T): T` | ์์ฌ ๋์ ์์ฑ๊ธฐ | O(log n) | O(1) |
|
|
86
99
|
|
|
87
|
-
|
|
100
|
+
```typescript
|
|
101
|
+
// ์ ํธ๋ฆฌํฐ ํจ์ ์ฌ์ฉ ์์
|
|
102
|
+
const numbers = [3, 1, 4, 1, 5];
|
|
103
|
+
numbers.sort(useCompare); // [1, 1, 3, 4, 5]
|
|
88
104
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
| `filter(fn)` | ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ง ์ ์ง | `.filter(x => x > 10)` |
|
|
93
|
-
| `limit(n)` | ์ฒ์ N๊ฐ ์์๋ก ์ ํ | `.limit(5)` |
|
|
94
|
-
| `skip(n)` | ์ฒ์ N๊ฐ ์์ ๊ฑด๋๋ฐ๊ธฐ | `.skip(2)` |
|
|
95
|
-
| `distinct()` | ์ค๋ณต ์ ๊ฑฐ (๊ธฐ๋ณธ์ ์ผ๋ก Set ์ฌ์ฉ) | `.distinct()` |
|
|
96
|
-
| `sorted()` | ์์ ์ ๋ ฌ (์์ฐ ์์) | `.sorted()` |
|
|
97
|
-
| `sorted(comparator)` | ์ปค์คํ
์ ๋ ฌ | `.sorted((a, b) => a - b)` |
|
|
98
|
-
| `toOrdered()` | ์ ๋ ฌ ํ `OrderedCollectable` ๋ฐํ | `.toOrdered()` |
|
|
99
|
-
| `toUnordered()` | **์ ๋ ฌ ์์ โ ๊ฐ์ฅ ๋น ๋ฆ** | `.toUnordered()` โ
|
|
|
100
|
-
| `collect(collector)` | ์ปฌ๋ ํฐ๋ก ์ง๊ณ | `.collect(Collector.full(...))` |
|
|
101
|
-
| `toArray()` | ๋ฐฐ์ด๋ก ๋ณํ | `.toArray()` |
|
|
102
|
-
| `toSet()` | Set์ผ๋ก ๋ณํ | `.toSet()` |
|
|
103
|
-
| `toMap(keyFn, valFn)` | Map์ผ๋ก ๋ณํ | `.toMap(x => x.id, x => x)` |
|
|
105
|
+
const randomNum = useRandom(42); // ์๋ ๊ธฐ๋ฐ ๋์
|
|
106
|
+
const randomBigInt = useRandom(1000n); // BigInt ๋์
|
|
107
|
+
```
|
|
104
108
|
|
|
105
|
-
|
|
109
|
+
## ํฉํ ๋ฆฌ ๋ฉ์๋
|
|
106
110
|
|
|
107
|
-
###
|
|
111
|
+
### Optional ํฉํ ๋ฆฌ ๋ฉ์๋
|
|
108
112
|
|
|
109
|
-
|
|
113
|
+
| ๋ฉ์๋ | ์ค๋ช
| ์๊ฐ ๋ณต์ก๋ | ๊ณต๊ฐ ๋ณต์ก๋ |
|
|
114
|
+
|--------|------|------------|------------|
|
|
115
|
+
| `Optional.empty<T>()` | ๋น Optional ์์ฑ | O(1) | O(1) |
|
|
116
|
+
| `Optional.of<T>(value)` | ๊ฐ์ ๊ฐ์ง Optional ์์ฑ | O(1) | O(1) |
|
|
117
|
+
| `Optional.ofNullable<T>(value)` | null ํ์ฉ Optional ์์ฑ | O(1) | O(1) |
|
|
118
|
+
| `Optional.ofNonNull<T>(value)` | null์ด ์๋ Optional ์์ฑ | O(1) | O(1) |
|
|
110
119
|
|
|
111
120
|
```typescript
|
|
112
|
-
|
|
121
|
+
// Optional ์ฌ์ฉ ์์
|
|
122
|
+
const emptyOpt = Optional.empty<number>();
|
|
123
|
+
const presentOpt = Optional.of(42);
|
|
124
|
+
const nullableOpt = Optional.ofNullable<string>(null);
|
|
125
|
+
const nonNullOpt = Optional.ofNonNull("hello");
|
|
126
|
+
|
|
127
|
+
presentOpt.ifPresent(val => console.log(val)); // 42 ์ถ๋ ฅ
|
|
128
|
+
console.log(emptyOpt.orElse(100)); // 100 ์ถ๋ ฅ
|
|
113
129
|
```
|
|
114
130
|
|
|
115
|
-
|
|
116
|
-
์์๊ฐ ์ค์ํ์ง ์๊ณ ์๋๊ฐ ์ต์ฐ์ ์ผ ๋ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ธ์.
|
|
117
|
-
|
|
118
|
-
---
|
|
131
|
+
### Collector ํฉํ ๋ฆฌ ๋ฉ์๋
|
|
119
132
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
133
|
+
| ๋ฉ์๋ | ์ค๋ช
| ์๊ฐ ๋ณต์ก๋ | ๊ณต๊ฐ ๋ณต์ก๋ |
|
|
134
|
+
|--------|------|------------|------------|
|
|
135
|
+
| `Collector.full(identity, accumulator, finisher)` | ์์ ํ ์์ง๊ธฐ ์์ฑ | O(1) | O(1) |
|
|
136
|
+
| `Collector.shortable(identity, interruptor, accumulator, finisher)` | ์ค๋จ ๊ฐ๋ฅํ ์์ง๊ธฐ ์์ฑ | O(1) | O(1) |
|
|
123
137
|
|
|
124
138
|
```typescript
|
|
125
|
-
|
|
126
|
-
const
|
|
127
|
-
|
|
139
|
+
// Collector ์ฌ์ฉ ์์
|
|
140
|
+
const sumCollector = Collector.full(
|
|
141
|
+
() => 0,
|
|
142
|
+
(sum, num) => sum + num,
|
|
143
|
+
result => result
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
const numbers = from([1, 2, 3, 4, 5]);
|
|
147
|
+
const total = numbers.toUnoredered().collect(sumCollector); // 15
|
|
128
148
|
```
|
|
129
149
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
---
|
|
150
|
+
### Semantic ํฉํ ๋ฆฌ ๋ฉ์๋
|
|
133
151
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
152
|
+
| ๋ฉ์๋ | ์ค๋ช
| ์๊ฐ ๋ณต์ก๋ | ๊ณต๊ฐ ๋ณต์ก๋ |
|
|
153
|
+
|-------|------|-------------|-------------|
|
|
154
|
+
| `blob(blob, chunkSize)` | Blob์ผ๋ก๋ถํฐ ์คํธ๋ฆผ ์์ฑ | O(n) | O(chunkSize) |
|
|
155
|
+
| `empty<E>()` | ๋น ์คํธ๋ฆผ ์์ฑ | O(1) | O(1) |
|
|
156
|
+
| `fill<E>(element, count)` | ์ฑ์์ง ์คํธ๋ฆผ ์์ฑ | O(n) | O(1) |
|
|
157
|
+
| `from<E>(iterable)` | ๋ฐ๋ณต ๊ฐ๋ฅ ๊ฐ์ฒด๋ก๋ถํฐ ์คํธ๋ฆผ ์์ฑ | O(1) | O(1) |
|
|
158
|
+
| `interval(period, delay?)` | ์ ๊ธฐ์ ๊ฐ๊ฒฉ ์คํธ๋ฆผ ์์ฑ | O(1)* | O(1) |
|
|
159
|
+
| `iterate<E>(generator)` | ์์ฑ๊ธฐ๋ก๋ถํฐ ์คํธ๋ฆผ ์์ฑ | O(1) | O(1) |
|
|
160
|
+
| `range(start, end, step)` | ์ซ์ ๋ฒ์ ์คํธ๋ฆผ ์์ฑ | O(n) | O(1) |
|
|
161
|
+
| `websocket(websocket)` | WebSocket์ผ๋ก๋ถํฐ ์คํธ๋ฆผ ์์ฑ | O(1) | O(1) |
|
|
139
162
|
|
|
140
163
|
```typescript
|
|
141
|
-
|
|
142
|
-
|
|
164
|
+
// Semantic ํฉํ ๋ฆฌ ๋ฉ์๋ ์ฌ์ฉ ์์
|
|
165
|
+
|
|
166
|
+
// Blob์ผ๋ก๋ถํฐ ์คํธ๋ฆผ ์์ฑ (์ฒญํฌ ์ฝ๊ธฐ)
|
|
167
|
+
blob(someBlob, 1024n)
|
|
168
|
+
.toUnordered()
|
|
169
|
+
.write(WritableStream)
|
|
170
|
+
.then(callback) // ์คํธ๋ฆผ ์ฐ๊ธฐ ์ฑ๊ณต
|
|
171
|
+
.catch(writeFi); // ์คํธ๋ฆผ ์ฐ๊ธฐ ์คํจ
|
|
172
|
+
|
|
173
|
+
// ๋ค๋ฅธ ์คํธ๋ฆผ๊ณผ ์ฐ๊ฒฐ๋ ๋๊น์ง ์คํ๋์ง ์๋ ๋น ์คํธ๋ฆผ ์์ฑ
|
|
174
|
+
empty<string>()
|
|
175
|
+
.toUnordered()
|
|
176
|
+
.join(); //[]
|
|
177
|
+
|
|
178
|
+
// ์ฑ์์ง ์คํธ๋ฆผ ์์ฑ
|
|
179
|
+
const filledStream = fill("hello", 3); // "hello", "hello", "hello"
|
|
180
|
+
|
|
181
|
+
// ์ด๊ธฐ ์ง์ฐ 2์ด, ์คํ ์ฃผ๊ธฐ 5์ด์ ์๊ณ์ด ์คํธ๋ฆผ ์์ฑ
|
|
182
|
+
// ํ์ด๋จธ ๋ฉ์ปค๋์ฆ์ผ๋ก ๊ตฌํ, ์์คํ
์ค์ผ์ค๋ง ์ ํ์ผ๋ก ์ธํ ์๊ฐ ๋ณ๋ ๊ฐ๋ฅ์ฑ ์์
|
|
183
|
+
const intervalStream = interval(5000, 2000);
|
|
184
|
+
|
|
185
|
+
// ๋ฐ๋ณต ๊ฐ๋ฅ ๊ฐ์ฒด๋ก๋ถํฐ ์คํธ๋ฆผ ์์ฑ
|
|
186
|
+
const numberStream = from([1, 2, 3, 4, 5]);
|
|
187
|
+
const stringStream = from(new Set(["Alex", "Bob"]));
|
|
188
|
+
|
|
189
|
+
// ๋ฒ์ ์คํธ๋ฆผ ์์ฑ
|
|
190
|
+
const rangeStream = range(1, 10, 2); // 1, 3, 5, 7, 9
|
|
191
|
+
|
|
192
|
+
// WebSocket ์ด๋ฒคํธ ์คํธ๋ฆผ
|
|
193
|
+
const ws = new WebSocket("ws://localhost:8080");
|
|
194
|
+
websocket(ws)
|
|
195
|
+
.filter((event)=> event.type === "message") // ๋ฉ์์ง ์ด๋ฒคํธ๋ง ๋ชจ๋ํฐ๋ง
|
|
196
|
+
.toUnordered() // ์ด๋ฒคํธ๋ ์ผ๋ฐ์ ์ผ๋ก ์ ๋ ฌ๋์ง ์์
|
|
197
|
+
.forEach((event)=> receive(event)); // ๋ฉ์์ง ์์
|
|
143
198
|
```
|
|
144
199
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
|
161
|
-
|
|
162
|
-
| `
|
|
163
|
-
| `
|
|
164
|
-
| `
|
|
165
|
-
| `
|
|
166
|
-
| `
|
|
167
|
-
| `
|
|
168
|
-
| `
|
|
169
|
-
| `
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
### 7. `OrderedCollectable<E>` โ ์ ๋ ฌ๋ ๋ฐ์ดํฐ
|
|
174
|
-
|
|
175
|
-
์์๋ค์ **์๋์ผ๋ก ์ ๋ ฌ**ํ๊ณ ์ถ๋ค๋ฉด ์ด ํด๋์ค๋ฅผ ์ฌ์ฉํ์ธ์.
|
|
176
|
-
|
|
177
|
-
**์ปค์คํ
๋น๊ต์**๋ฅผ ๋ฐ๊ฑฐ๋ ์์ฐ ์ ๋ ฌ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
|
|
200
|
+
## Semantic ํด๋์ค ๋ฉ์๋
|
|
201
|
+
|
|
202
|
+
| ๋ฉ์๋ | ์ค๋ช
| ์๊ฐ ๋ณต์ก๋ | ๊ณต๊ฐ ๋ณต์ก๋ |
|
|
203
|
+
|--------|------|------------|------------|
|
|
204
|
+
| `concat(other)` | ๋ ์คํธ๋ฆผ ์ฐ๊ฒฐ | O(n) | O(1) |
|
|
205
|
+
| `distinct()` | ์ค๋ณต ์ ๊ฑฐ | O(n) | O(n) |
|
|
206
|
+
| `distinct(comparator)` | ๋น๊ต๊ธฐ๋ฅผ ์ฌ์ฉํ ์ค๋ณต ์ ๊ฑฐ | O(nยฒ) | O(n) |
|
|
207
|
+
| `dropWhile(predicate)` | ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ ๋ฒ๋ฆฌ๊ธฐ | O(n) | O(1) |
|
|
208
|
+
| `filter(predicate)` | ์์ ํํฐ๋ง | O(n) | O(1) |
|
|
209
|
+
| `flat(mapper)` | ํ๋ฉดํ ๋งคํ | O(n ร m) | O(1) |
|
|
210
|
+
| `flatMap(mapper)` | ์๋ก์ด ํ์
์ผ๋ก ํ๋ฉดํ ๋งคํ | O(n ร m) | O(1) |
|
|
211
|
+
| `limit(n)` | ์์ ์ ์ ํ | O(n) | O(1) |
|
|
212
|
+
| `map(mapper)` | ๋งคํ ๋ณํ | O(n) | O(1) |
|
|
213
|
+
| `peek(consumer)` | ์์ ๊ฒ์ฌ | O(n) | O(1) |
|
|
214
|
+
| `redirect(redirector)` | ์ธ๋ฑ์ค ๋ฆฌ๋๋ ์
| O(n) | O(1) |
|
|
215
|
+
| `reverse()` | ์คํธ๋ฆผ ๋ฐ์ | O(n) | O(1) |
|
|
216
|
+
| `shuffle()` | ๋ฌด์์ ์
ํ | O(n) | O(1) |
|
|
217
|
+
| `shuffle(mapper)` | ๋งคํผ๋ฅผ ์ฌ์ฉํ ์
ํ | O(n) | O(1) |
|
|
218
|
+
| `skip(n)` | ์ฒ์ n๊ฐ ์์ ๊ฑด๋๋ฐ๊ธฐ | O(n) | O(1) |
|
|
219
|
+
| `sorted()` | ์ ๋ ฌ | O(n log n) | O(n) |
|
|
220
|
+
| `sorted(comparator)` | ๋น๊ต๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ๋ ฌ | O(n log n) | O(n) |
|
|
221
|
+
| `sub(start, end)` | ์๋ธ ์คํธ๋ฆผ ๊ฐ์ ธ์ค๊ธฐ | O(n) | O(1) |
|
|
222
|
+
| `takeWhile(predicate)` | ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ ๊ฐ์ ธ์ค๊ธฐ | O(n) | O(1) |
|
|
223
|
+
| `translate(offset)` | ์ธ๋ฑ์ค ๋ณํ | O(n) | O(1) |
|
|
224
|
+
| `translate(translator)` | ๋ณํ๊ธฐ๋ฅผ ์ฌ์ฉํ ์ธ๋ฑ์ค ๋ณํ | O(n) | O(1) |
|
|
178
225
|
|
|
179
226
|
```typescript
|
|
180
|
-
|
|
181
|
-
const
|
|
227
|
+
// Semantic ์์
์์
|
|
228
|
+
const result = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
|
|
229
|
+
.filter(n => n % 2 === 0) // ์ง์ ํํฐ๋ง
|
|
230
|
+
.map(n => n * 2) // 2๋ฐฐ ๋ณํ
|
|
231
|
+
.skip(1) // ์ฒซ ๋ฒ์งธ ์์ ๊ฑด๋๋ฐ๊ธฐ
|
|
232
|
+
.limit(3) // 3๊ฐ ์์๋ก ์ ํ
|
|
233
|
+
.toArray(); // ๋ฐฐ์ด๋ก ๋ณํ
|
|
234
|
+
// ๊ฒฐ๊ณผ: [8, 12, 20]
|
|
235
|
+
|
|
236
|
+
// ๋ณต์กํ ์์
์์
|
|
237
|
+
const complexResult = range(1, 100, 1)
|
|
238
|
+
.flatMap(n => from([n, n * 2])) // ๊ฐ ์์๋ฅผ 2๊ฐ ์์๋ก ๋งคํ
|
|
239
|
+
.distinct() // ์ค๋ณต ์ ๊ฑฐ
|
|
240
|
+
.shuffle() // ๋ฌด์์ ์
ํ
|
|
241
|
+
.takeWhile(n => n < 50) // 50 ๋ฏธ๋ง ์์ ๊ฐ์ ธ์ค๊ธฐ
|
|
242
|
+
.toOrdered() // ์ ๋ ฌ๋ ์์ง๊ธฐ๋ก ๋ณํ
|
|
243
|
+
.toArray(); // ๋ฐฐ์ด๋ก ๋ณํ
|
|
182
244
|
```
|
|
183
245
|
|
|
184
|
-
|
|
246
|
+
## ์์ง๊ธฐ ๋ณํ ๋ฉ์๋
|
|
185
247
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
248
|
+
| ๋ฉ์๋ | ์ค๋ช
| ์๊ฐ ๋ณต์ก๋ | ๊ณต๊ฐ ๋ณต์ก๋ |
|
|
249
|
+
|--------|------|------------|------------|
|
|
250
|
+
| `toUnoredered()` | ๋น์ ๋ ฌ ์์ง๊ธฐ๋ก ๋ณํ (์ฑ๋ฅ ์ฐ์ ) | O(1) | O(1) |
|
|
251
|
+
| `toOrdered()` | ์ ๋ ฌ๋ ์์ง๊ธฐ๋ก ๋ณํ | O(1) | O(1) |
|
|
252
|
+
| `sorted()` | ์ ๋ ฌ ํ ์ ๋ ฌ๋ ์์ง๊ธฐ๋ก ๋ณํ | O(n log n) | O(n) |
|
|
253
|
+
| `toWindow()` | ์๋์ฐ ์์ง๊ธฐ๋ก ๋ณํ | O(1) | O(1) |
|
|
254
|
+
| `toNumericStatistics()` | ์ซ์ ํต๊ณ๋ก ๋ณํ | O(1) | O(1) |
|
|
255
|
+
| `toBigintStatistics()` | BigInt ํต๊ณ๋ก ๋ณํ | O(1) | O(1) |
|
|
191
256
|
|
|
192
257
|
```typescript
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
258
|
+
// ์์ง๊ธฐ ๋ณํ ์์
|
|
259
|
+
const numbers = from([3, 1, 4, 1, 5, 9, 2, 6, 5]);
|
|
260
|
+
|
|
261
|
+
// ์ฑ๋ฅ ์ฐ์ : ๋น์ ๋ ฌ ์์ง๊ธฐ ์ฌ์ฉ
|
|
262
|
+
const unordered = numbers
|
|
263
|
+
.filter(n => n > 3)
|
|
264
|
+
.toUnoredered();
|
|
265
|
+
|
|
266
|
+
// ์ ๋ ฌ ํ์: ์ ๋ ฌ๋ ์์ง๊ธฐ ์ฌ์ฉ
|
|
267
|
+
const ordered = numbers
|
|
268
|
+
.sorted()
|
|
269
|
+
.toOrdered();
|
|
270
|
+
|
|
271
|
+
// ํต๊ณ ๋ถ์: ํต๊ณ ์์ง๊ธฐ ์ฌ์ฉ
|
|
272
|
+
const stats = numbers
|
|
273
|
+
.toNumericStatistics();
|
|
274
|
+
|
|
275
|
+
console.log(stats.mean()); // ํ๊ท ๊ฐ
|
|
276
|
+
console.log(stats.median()); // ์ค์๊ฐ
|
|
277
|
+
console.log(stats.standardDeviation()); // ํ์คํธ์ฐจ
|
|
278
|
+
|
|
279
|
+
// ์๋์ฐ ์์
|
|
280
|
+
const windowed = numbers
|
|
281
|
+
.toWindow()
|
|
282
|
+
.tumble(3n); // 3๊ฐ ์์ ์๋์ฐ
|
|
283
|
+
|
|
284
|
+
windowed.forEach(window => {
|
|
285
|
+
console.log(window.toArray()); // ๊ฐ ์๋์ฐ ๋ด์ฉ
|
|
286
|
+
});
|
|
196
287
|
```
|
|
197
288
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
|
215
|
-
|
|
216
|
-
| `
|
|
217
|
-
| `
|
|
218
|
-
| `
|
|
219
|
-
| `
|
|
220
|
-
| `
|
|
221
|
-
| `
|
|
222
|
-
| `
|
|
223
|
-
| `standardDeviation()` | ํ์ค ํธ์ฐจ | `.standardDeviation()` |
|
|
224
|
-
| `summate()` | ํฉ๊ณ | `.summate()` |
|
|
225
|
-
| `quantile(q)` | q๋ถ์์ (0~1) | `.quantile(0.5)` โ ์ค์๊ฐ |
|
|
226
|
-
| `frequency()` | ๋น๋ ๋งต | `.frequency()` |
|
|
227
|
-
|
|
228
|
-
---
|
|
229
|
-
|
|
230
|
-
## ๐งช ์ ์ฒด ์์
|
|
289
|
+
## Collectable ์์ง ๋ฉ์๋
|
|
290
|
+
|
|
291
|
+
| ๋ฉ์๋ | ์ค๋ช
| ์๊ฐ ๋ณต์ก๋ | ๊ณต๊ฐ ๋ณต์ก๋ |
|
|
292
|
+
|--------|------|------------|------------|
|
|
293
|
+
| `anyMatch(predicate)` | ์ผ์นํ๋ ์์ ์กด์ฌ ์ฌ๋ถ ํ์ธ | O(n) | O(1) |
|
|
294
|
+
| `allMatch(predicate)` | ๋ชจ๋ ์์ ์ผ์น ์ฌ๋ถ ํ์ธ | O(n) | O(1) |
|
|
295
|
+
| `count()` | ์์ ๊ฐ์ ์ธ๊ธฐ | O(n) | O(1) |
|
|
296
|
+
| `isEmpty()` | ๋น์ด ์๋์ง ํ์ธ | O(1) | O(1) |
|
|
297
|
+
| `findAny()` | ์๋ฌด ์์ ์ฐพ๊ธฐ | O(n) | O(1) |
|
|
298
|
+
| `findFirst()` | ์ฒซ ๋ฒ์งธ ์์ ์ฐพ๊ธฐ | O(n) | O(1) |
|
|
299
|
+
| `findLast()` | ๋ง์ง๋ง ์์ ์ฐพ๊ธฐ | O(n) | O(1) |
|
|
300
|
+
| `forEach(action)` | ๋ชจ๋ ์์ ๋ฐ๋ณต | O(n) | O(1) |
|
|
301
|
+
| `group(classifier)` | ๋ถ๋ฅ๊ธฐ๋ก ๊ทธ๋ฃนํ | O(n) | O(n) |
|
|
302
|
+
| `groupBy(keyExtractor, valueExtractor)` | ํค-๊ฐ ์ถ์ถ๊ธฐ๋ก ๊ทธ๋ฃนํ | O(n) | O(n) |
|
|
303
|
+
| `join()` | ๋ฌธ์์ด๋ก ๊ฒฐํฉ | O(n) | O(n) |
|
|
304
|
+
| `join(delimiter)` | ๊ตฌ๋ถ์๋ก ๊ฒฐํฉ | O(n) | O(n) |
|
|
305
|
+
| `nonMatch(predicate)` | ์ผ์นํ๋ ์์ ์์ ํ์ธ | O(n) | O(1) |
|
|
306
|
+
| `partition(count)` | ๊ฐ์๋ก ๋ถํ | O(n) | O(n) |
|
|
307
|
+
| `partitionBy(classifier)` | ๋ถ๋ฅ๊ธฐ๋ก ๋ถํ | O(n) | O(n) |
|
|
308
|
+
| `reduce(accumulator)` | ์ถ์ ์์
| O(n) | O(1) |
|
|
309
|
+
| `reduce(identity, accumulator)` | ์ด๊ธฐ๊ฐ์ ์ฌ์ฉํ ์ถ์ | O(n) | O(1) |
|
|
310
|
+
| `toArray()` | ๋ฐฐ์ด๋ก ๋ณํ | O(n) | O(n) |
|
|
311
|
+
| `toMap(keyExtractor, valueExtractor)` | Map์ผ๋ก ๋ณํ | O(n) | O(n) |
|
|
312
|
+
| `toSet()` | Set์ผ๋ก ๋ณํ | O(n) | O(n) |
|
|
313
|
+
| `write(stream)` | ์คํธ๋ฆผ์ ์ฐ๊ธฐ | O(n) | O(1) |
|
|
231
314
|
|
|
232
315
|
```typescript
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
//
|
|
239
|
-
|
|
240
|
-
console.log(
|
|
241
|
-
|
|
242
|
-
//
|
|
243
|
-
|
|
244
|
-
console.log(
|
|
245
|
-
|
|
246
|
-
//
|
|
247
|
-
const
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
316
|
+
// Collectable ์์
์์
|
|
317
|
+
const data = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
|
|
318
|
+
.filter(n => n % 2 === 0)
|
|
319
|
+
.toOrdered();
|
|
320
|
+
|
|
321
|
+
// ์ผ์น ํ์ธ
|
|
322
|
+
console.log(data.anyMatch(n => n > 5)); // true
|
|
323
|
+
console.log(data.allMatch(n => n < 20)); // true
|
|
324
|
+
|
|
325
|
+
// ๊ฒ์ ์์
|
|
326
|
+
data.findFirst().ifPresent(n => console.log(n)); // 2
|
|
327
|
+
data.findAny().ifPresent(n => console.log(n)); // ์๋ฌด ์์
|
|
328
|
+
|
|
329
|
+
// ๊ทธ๋ฃนํ ์์
|
|
330
|
+
const grouped = data.groupBy(
|
|
331
|
+
n => n > 5 ? "large" : "small",
|
|
332
|
+
n => n * 2
|
|
333
|
+
);
|
|
334
|
+
// {small: [4, 8], large: [12, 16, 20]}
|
|
335
|
+
|
|
336
|
+
// ์ถ์ ์์
|
|
337
|
+
const sum = data.reduce(0, (acc, n) => acc + n); // 30
|
|
338
|
+
|
|
339
|
+
// ์ถ๋ ฅ ์์
|
|
340
|
+
data.join(", "); // "2, 4, 6, 8, 10"
|
|
253
341
|
```
|
|
254
342
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
|
262
|
-
|
|
263
|
-
| `
|
|
264
|
-
| `
|
|
265
|
-
| `
|
|
266
|
-
| `
|
|
267
|
-
| `
|
|
268
|
-
| `
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
๋ฌดํ ๋๋ ์ ์ด๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ํ **์ปค์คํ
์์ฑ๊ธฐ**๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค:
|
|
343
|
+
## ํต๊ณ ๋ถ์ ๋ฉ์๋
|
|
344
|
+
|
|
345
|
+
### NumericStatistics ๋ฉ์๋
|
|
346
|
+
|
|
347
|
+
| ๋ฉ์๋ | ์ค๋ช
| ์๊ฐ ๋ณต์ก๋ | ๊ณต๊ฐ ๋ณต์ก๋ |
|
|
348
|
+
|--------|------|------------|------------|
|
|
349
|
+
| `range()` | ๋ฒ์ | O(n) | O(1) |
|
|
350
|
+
| `variance()` | ๋ถ์ฐ | O(n) | O(1) |
|
|
351
|
+
| `standardDeviation()` | ํ์คํธ์ฐจ | O(n) | O(1) |
|
|
352
|
+
| `mean()` | ํ๊ท | O(n) | O(1) |
|
|
353
|
+
| `median()` | ์ค์๊ฐ | O(n log n) | O(n) |
|
|
354
|
+
| `mode()` | ์ต๋น๊ฐ | O(n) | O(n) |
|
|
355
|
+
| `frequency()` | ๋น๋ ๋ถํฌ | O(n) | O(n) |
|
|
356
|
+
| `summate()` | ํฉ๊ณ | O(n) | O(1) |
|
|
357
|
+
| `quantile(quantile)` | ๋ถ์์ | O(n log n) | O(n) |
|
|
358
|
+
| `interquartileRange()` | ์ฌ๋ถ์ ๋ฒ์ | O(n log n) | O(n) |
|
|
359
|
+
| `skewness()` | ์๋ | O(n) | O(1) |
|
|
360
|
+
| `kurtosis()` | ์ฒจ๋ | O(n) | O(1) |
|
|
275
361
|
|
|
276
362
|
```typescript
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
363
|
+
// ํต๊ณ ๋ถ์ ์์
|
|
364
|
+
const numbers = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
|
|
365
|
+
.toNumericStatistics();
|
|
366
|
+
|
|
367
|
+
console.log("ํ๊ท :", numbers.mean()); // 5.5
|
|
368
|
+
console.log("์ค์๊ฐ:", numbers.median()); // 5.5
|
|
369
|
+
console.log("ํ์คํธ์ฐจ:", numbers.standardDeviation()); // ~2.87
|
|
370
|
+
console.log("ํฉ๊ณ:", numbers.summate()); // 55
|
|
371
|
+
|
|
372
|
+
// ๋งคํผ๋ฅผ ์ฌ์ฉํ ํต๊ณ ๋ถ์
|
|
373
|
+
const objects = from([
|
|
374
|
+
{ value: 10 },
|
|
375
|
+
{ value: 20 },
|
|
376
|
+
{ value: 30 }
|
|
377
|
+
]).toNumericStatistics();
|
|
378
|
+
|
|
379
|
+
console.log("๋งคํ๋ ํ๊ท :", objects.mean(obj => obj.value)); // 20
|
|
285
380
|
```
|
|
286
381
|
|
|
287
|
-
|
|
382
|
+
## ์ฑ๋ฅ ์ ํ ๊ฐ์ด๋
|
|
288
383
|
|
|
384
|
+
### ๋น์ ๋ ฌ ์์ง๊ธฐ ์ ํ (์ฑ๋ฅ ์ฐ์ )
|
|
289
385
|
```typescript
|
|
290
|
-
|
|
386
|
+
// ์์ ๋ณด์ฅ์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ
|
|
387
|
+
const highPerformance = data
|
|
388
|
+
.filter(predicate)
|
|
389
|
+
.map(mapper)
|
|
390
|
+
.toUnoredered(); // ์ต๊ณ ์ฑ๋ฅ
|
|
291
391
|
```
|
|
292
392
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
---
|
|
300
|
-
|
|
301
|
-
## ๐ ๊ธฐ์ฌ
|
|
302
|
-
|
|
303
|
-
Pull Request, ์ด์(Issue), ์์ด๋์ด ์ ์ ๋ฑ ๋ชจ๋ ํ์ํฉ๋๋ค!
|
|
304
|
-
|
|
305
|
-
---
|
|
306
|
-
|
|
307
|
-
## ๐ ๋น ๋ฅธ ์์ ์์ฝ
|
|
308
|
-
|
|
309
|
-
| ์์
| ๋ฉ์๋ |
|
|
310
|
-
|------|--------|
|
|
311
|
-
| null/undefined ์์ ํ๊ฒ ์ฒ๋ฆฌ | `Optional<T>` |
|
|
312
|
-
| ์คํธ๋ฆผ ์์ฑ | `from([...])`, `range()`, `fill()` |
|
|
313
|
-
| ๋ฐ์ดํฐ ๋ณํ | `map()`, `filter()` |
|
|
314
|
-
| ๋ฐ์ดํฐ ์ ๋ ฌ | `sorted()`, `toOrdered()` |
|
|
315
|
-
| ์ ๋ ฌ ์์ (๊ฐ์ฅ ๋น ๋ฆ) | `toUnordered()` โ
|
|
|
316
|
-
| ๊ทธ๋ฃนํ / ์ง๊ณ | `toMap()`, `group()`, `Collector` |
|
|
317
|
-
| ํต๊ณ | `NumericStatistics`, `mean()`, `median()` ๋ฑ |
|
|
393
|
+
### ์ ๋ ฌ๋ ์์ง๊ธฐ ์ ํ (์์ ํ์)
|
|
394
|
+
```typescript
|
|
395
|
+
// ์์ ์์๋ฅผ ์ ์งํด์ผ ํ๋ ๊ฒฝ์ฐ
|
|
396
|
+
const ordered = data.sorted(comparator);
|
|
397
|
+
```
|
|
318
398
|
|
|
319
|
-
|
|
399
|
+
### ์๋์ฐ ์์ง๊ธฐ ์ ํ (์๋์ฐ ์์
)
|
|
400
|
+
```typescript
|
|
401
|
+
// ์๋์ฐ ์์
์ด ํ์ํ ๊ฒฝ์ฐ
|
|
402
|
+
const windowed = data
|
|
403
|
+
.toWindow()
|
|
404
|
+
.slide(5n, 2n); // ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
|
|
405
|
+
```
|
|
320
406
|
|
|
321
|
-
|
|
407
|
+
### ํต๊ณ ๋ถ์ ์ ํ (์ซ์ ๊ณ์ฐ)
|
|
408
|
+
```typescript
|
|
409
|
+
// ํต๊ณ ๋ถ์์ด ํ์ํ ๊ฒฝ์ฐ
|
|
410
|
+
const stats = data
|
|
411
|
+
.toNumericStatistics(); // ์ซ์ ํต๊ณ
|
|
322
412
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
413
|
+
const bigIntStats = data
|
|
414
|
+
.toBigintStatistics(); // BigInt ํต๊ณ
|
|
415
|
+
```
|
|
326
416
|
|
|
327
|
-
|
|
417
|
+
[GitHub](https://github.com/eloyhere/semantic-typescript)
|
|
418
|
+
[NPMJS](https://www.npmjs.com/package/semantic-typescript)
|
|
328
419
|
|
|
329
|
-
|
|
420
|
+
## ์ค์ํ ์ฃผ์์ฌํญ
|
|
330
421
|
|
|
331
|
-
|
|
422
|
+
1. **์ ๋ ฌ ์์
์ ์ํฅ**: ์ ๋ ฌ๋ ์์ง๊ธฐ์์ `sorted()` ์์
์ `redirect`, `translate`, `shuffle`, `reverse` ํจ๊ณผ๋ฅผ ๋ฎ์ด์๋๋ค
|
|
423
|
+
2. **์ฑ๋ฅ ๊ณ ๋ ค์ฌํญ**: ์์ ๋ณด์ฅ์ด ํ์ํ์ง ์์ผ๋ฉด `toUnoredered()`๋ฅผ ์ฐ์ ํ์ฌ ๋ ๋์ ์ฑ๋ฅ์ ์ป์ผ์ธ์
|
|
424
|
+
3. **๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋**: ์ ๋ ฌ ์์
์๋ O(n)์ ์ถ๊ฐ ๊ณต๊ฐ์ด ํ์ํฉ๋๋ค
|
|
425
|
+
4. **์ค์๊ฐ ๋ฐ์ดํฐ**: Semantic ์คํธ๋ฆผ์ ์ค์๊ฐ ๋ฐ์ดํฐ์ ์ ํฉํ๋ฉฐ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ง์ํฉ๋๋ค
|
|
332
426
|
|
|
333
|
-
|
|
334
|
-
- `toUnordered()` โ **์ ๋ ฌ ์์, ๊ฐ์ฅ ๋น ๋ฆ**
|
|
335
|
-
- ๊ทธ ์ธ (`sorted()`, `toOrdered()` ๋ฑ) โ **๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํจ**
|
|
427
|
+
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ TypeScript ๊ฐ๋ฐ์์๊ฒ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ ์คํธ๋ฆผ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ด์ ๊ณผ ํ์
์์ ์ฑ์ ๊ฒฐํฉํฉ๋๋ค.
|