26. MayBe函子

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/4/2023, 10:01:08 AM
강남역 4번 출구
Plastic / Fallin` Dild