javascript - 在函数式编程中重用功能

标签 javascript functional-programming

例如,我们在 Nodejs 中有一些框架,例如 laravel。你有这样的东西:

class Model {
  getTable(){}
  edit(){let table = this.getTable();//edit...}
  insert(){}
  delete(){//some code}
}

还有另一个子类:

class User extends Model {
  getTable() { return 'users' }
}

这是 OOP 版本。我重复使用编辑、插入和删除功能。

如何通过函数式编程实现功能的重用。

我更喜欢 JavaScript 作为演示,尽管它不是完全的 FP 语言。

谢谢

最佳答案

似乎另一个原因是您可以使用部分应用程序获得可重用性。

const createPerson = ( { create } ) => ( { name, age } ) => create ( {
  name: name.toLowerCase (),
  age: age <= 0 ? 1 : age
} )

const db = new Map()

const inc = ( () => {
   let i = 0
   
   return () => ++i

} ) ()

const createOps = db => ( {
    getById: id => db.get ( id ),
    create: data => ( db.set ( inc(), data ), data )
} )

// _createPerson is bound to a specific 
// data mapper so this function is already 
// agnostic to underlying tech if it's spread
// across the codebase
const _createPerson = createPerson ( createOps ( db ) )

const person = _createPerson ( { name: 'Matías', age: 33 } )

console.log ( person )

关于javascript - 在函数式编程中重用功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50014933/

相关文章:

javascript - expressjs 文件上传,检查是否确实有文件发送,指定最大文件大小并保留其名称

javascript - 检测非数字字符的功能不起作用

oop - 相当于在 Haskell 中创建对象

java - 使用比较器对列表列表进行排序

haskell - 任何可用于 Selenium2/WebDriver 的纯函数式语言绑定(bind)?

Javascript如何使用递归从对象打印值

javascript - 如果第二个对象数组具有相同的值,则将数组添加到对象数组内的对象

javascript - 使用 Javascript 和 jQuery 监听和触发事件

visual-studio - F# 中具有不同返回类型的可区分联合类型检查

haskell - 如何优化这个 Haskell 限价订单簿(带有代码、报告、图表)?