当前位置:  开发笔记 > 后端 > 正文

在ruby中将函数作为参数传递

如何解决《在ruby中将函数作为参数传递》经验,为你挑选了1个好方法。

我试图用ruby中的函数式编程来解决这个问题,似乎没有太多好的文档.

本质上,我正在尝试编写一个具有Haskell类型签名的组合函数:

[a] -> [a] -> (a -> a -> a) -> [a]

所以

combine([1,2,3], [2,3,4], plus_func) => [3,5,7]
combine([1,2,3], [2,3,4], multiply_func) => [2,6,12]

等等

我发现了一些关于使用zip和map的东西,但是使用它感觉真的很难看.

实现这样的东西最"红宝石"的方式是什么?



1> 小智..:

好吧,你说你知道拉链和地图所以这可能没有帮助.但我会发布以防万一.

def combine a, b
    a.zip(b).map { |i| yield i[0], i[1] }
end

puts combine([1,2,3], [2,3,4]) { |i, j| i+j }

不,我也不觉得它很漂亮.

编辑 -#ruby-lang @ irc.freenode.net建议:

def combine(a, b, &block)
    a.zip(b).map(&block)
end

或者,如果你想转发args:

def combine(a, b, *args, &block)
    a.zip(b, *args).map(&block)
end

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有