cmd*_*mdv 5 javascript functional-programming lodash ramda.js
我正在尝试转换使用大量点符号链接的旧api,这需要保留,即:
[1,2,3,4].newSlice(1,2).add(1) // [3]
Run Code Online (Sandbox Code Playgroud)
我想在这个示例Ramda中添加组合的功能样式,但lodash或其他人会没问题:
const sliceAddOne = R.compose(add(1), newSlice(1,2))
sliceAddOne([1,2,3,4])// [3]
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在我的函数中进行链接和组合newSlice这个函数的样子?
我有一个小jsBin的例子.
编辑
\n\n我想我一开始误解了你。f你想要一个可以调用的函数
f(...args)(someObj) === someObj.f(...args)\nRun Code Online (Sandbox Code Playgroud)\n\n我会这样做
\n\n// infix\nArray.prototype.newSlice = function(x,y) { return this.slice(x,y) }\n\n// prefix \nconst newSlice = (x,y) => F => F.newSlice(x,y)\nRun Code Online (Sandbox Code Playgroud)\n\n这是一个很好的设计,因为您可以newSlice在任何您希望具有newSlice功能的对象上实现,并且前缀函数将正常工作。这还允许您对每个对象类型(数组、字符串、其他...)有一个唯一的实现newSlice,因为我们正在切片的基础数据很可能会不同 \xe2\x80\x93 您将获得所有这无需this在函数体内进行愚蠢的条件检查。
f(...args)(someObj) === someObj.f(...args)\nRun Code Online (Sandbox Code Playgroud)\r\n| 归档时间: |
|
| 查看次数: |
602 次 |
| 最近记录: |