我想创建一个JavaScript管道,例如powershell,bash(|)或f#(|>)。就是相当于
getstuff() | sort() | grep("foo") | take(5)
我在coffeescript论坛上看到了有关此问题的讨论,但最终他们搁置了它,因为每个人都说您可以使用函数链来做同样的事情。但据我所知,require getstuff返回的东西上带有排序方法。 sort方法必须返回上面带有grep方法等的东西。这非常有限制,因为它要求所有潜在的管道成员事先相互了解。我知道JavaScript中有一些非常聪明的技巧,但我仍然处于101级-这样可行吗
getstuff().sort.().grep().take()
没有那个约束
最佳答案
这可行吗
getstuff().sort.().grep().take()
没有那个约束
没有。
我喜欢简短的答案!你能建议任何类似的事情吗
在较高的层次上,您可以执行类似于jQuery在后台允许链接的操作。创建一个类似数组的包装对象类型,其中包含您希望能够调用的所有函数;除了显式传递的参数之外,每个后续的链式调用都可以在内部堆栈上进行操作。
不要一直打败那只笨拙的jQuery之马,但是了解我在说什么的最好方法之一就是开始研究jQuery core source code并弄清楚链接是如何工作的。