28. IO函子

1/27/2023 js

# IO函子 input、output

到目前为止对函子的认识:可以把函子当成一个盒子,盒子里保存一个值,通过调用函数的map方法传入一个函数,通过这个函数对这个盒子的值进行处理。

  • IO函子中的value是一个函数,这里是把函数作为值来处理
  • IO函子可以把不纯的动作存储到_value中,延迟执行这个不纯的操作(惰性执行),包装当前的操作纯
  • 把不纯的操作交给调用者来执行
const fp = require('lodash/fp')
class IO { 
  static of(value) {
    return new IO(function() {
      return value
    })
  }

  constructor(fn) {
     this._value = fn
  }

  map(fn) {
    return new IO(fp.flowRight(fn, this._value))
  }
}

// 输出当前执行node进程的路径
let r = IO.of(process).map(val => val.execPath)
console.log('r', r)
console.log('r  ---', r._value())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
最近更新时间: 2/4/2023, 10:01:08 AM
강남역 4번 출구
Plastic / Fallin` Dild