
JavaScript関数型プログラミング 複雑性を抑える発想と実践法を学ぶ - インプレスブックス
エレガントさだけではない関数型のメリット
本のサンプルコードはRxJS v4かv5用。v4、v5で試してもエラーで動かない箇所があるので、最新バージョンで試しました
npm install --save rxjs@7.8.2Code language: Bash (bash)
p302
import Rx from "rxjs";
Rx.range(1, 3)
.subscribe({
next: (n) => console.log(`Next: ${n}`),
error: (err) => console.error(`Error: ${err}`),
complete: () => console.log('Completed'),
});
Code language: JavaScript (javascript)
p303
const squreGenerator = function* (n) {
for (let i = 1; i <= n; i += 1) {
yield i * i;
}
}
const rxSquares = Rx.from(squreGenerator(3));
rxSquares.subscribe({next: (n) => console.log(`Next: ${n}`)});
//-> Next: 1
//-> Next: 4
//-> Next: 9Code language: JavaScript (javascript)
p304
Rx.of(1, 2, 3, 4, 5)
.pipe(Rx.filter(n => n % 2 !== 0))
.pipe(Rx.map(n => n * n))
.subscribe({
next: (n) => console.log(`Next: ${n}`),
});
//-> Next: 1
//-> Next: 9
//-> Next: 25Code language: JavaScript (javascript)
p306
Rx.fromEvent(document.querySelector('#student-ssn'), 'change')
.pipe(Rx.map(x => x.target.value))
.pipe(Rx.map(cleanInput))
.pipe(Rx.map(checkLengthSsn))
.subscribe({
next: (ssn) => console.log(ssn.isRight ? 'Valid' : 'Invalid'),
});
Code language: JavaScript (javascript)
