将函数替换为 ruby​​ 样式块

发布于 2024-10-17 13:55:13 字数 382 浏览 4 评论 0原文

有了下划线,我可以实现如下奇妙的效果:

_([1,2,3]).chain().map(function(n) {return n*2}).reduce(function(m,a) {return m +a},0).value()

显然,最详细的部分是定义函数。能不能更简单一点?像这样的东西:

 _([1,2,3]).chain().map( {|n| return n*2} ).reduce({|m,a| return m+2; },0).value()

Armed with underscore, I could achieve something fantastic like below:

_([1,2,3]).chain().map(function(n) {return n*2}).reduce(function(m,a) {return m +a},0).value()

Obviously, the most verbose part is the definition of function. Could it be more simpler? Something like:

 _([1,2,3]).chain().map( {|n| return n*2} ).reduce({|m,a| return m+2; },0).value()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凉风有信 2024-10-24 13:55:13

如果您喜欢编写紧凑的函数式编程,请检查 函数式 (警告:它需要非OOP 方法):

JS> reduce('+', 0, map('*2', [1, 2, 3]))
12

感觉就像你在写 Haskell ;-)

Haskell> foldl (+) 0 (map (*2) [1, 2, 3])
12

If you take delight in writing compact functional programming, check Functional (caveat: it takes the non-OOP approach):

JS> reduce('+', 0, map('*2', [1, 2, 3]))
12

It feels almost like you are writing Haskell ;-)

Haskell> foldl (+) 0 (map (*2) [1, 2, 3])
12
青萝楚歌 2024-10-24 13:55:13

如果您使用 CoffeeScript 您可以

_([1,2,3]).chain().map((n) -> n*2).reduce((m,a) -> m+2, 0).value()

使用匿名函数进行编写。

JavaScript 当然没有块。

If you were using CoffeeScript you could write

_([1,2,3]).chain().map((n) -> n*2).reduce((m,a) -> m+2, 0).value()

using anonymous functions.

JavaScript doesn't have blocks of course.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文