26. MayBe函子
leezozz 1/27/2023 js
# MayBe函子
- 我们在编程的过程中可能会遇到很多错误,需要对这些错误做相应的处理
- MAayBe函子的作用就是可以对外部的空值情况做处理(控制副作用在允许的范围)
class MayBe {
static of(value) {
return new MayBe(value)
}
constructor(value) {
return this._value = value
}
map(fn) {
return this.isNothing() ? MayBe.of(null) : MayBe.of(fn(this._value))
}
isNothing() {
return this._value === null || this._value === undefined
}
}
// const r = MayBe.of('hello hi')
// .map(val => val.toUpperCase())
// console.log(r) // { _value: 'HELLO HI' }
// const r = MayBe.of(null)
// .map(val => val.toUpperCase())
// console.log(r) // { _value: null }
const r = MayBe.of('hello hi')
.map(val => val.toUpperCase())
.map(val => null)
.map(val => val.split(' '))
console.log(r) // { _value: null }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32