例如,我们在 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/