为了理解 ruby 的函数式编程部分,我想编写一个函数,它将 2 个函数 f(x,y),g(x) 作为参数并返回一个新函数 h(x,y)=f(g(x ),g(y))。
def foo(x, y)
return x+y
end
def bar(x)
return 2*x
end
def comp(f,g)
end
f=comp(f,g)
f(1,2) #=> 6
我尝试过类似的事情
def comp(f,g)
mylambda = lambda {|x,y| return f(g(x),g(y))}
return mylambda
end
f=comp(foo, bar)
f.call(1,2)
我认为 f 现在会成为 Proc,我可以直接调用它。但显然“在'foo'中:错误数量的参数(0代表2)(ArgumentError)”
我必须使用什么语法?是否有可能返回一个“真正的”函数而不是 Proc,这样我就可以像正常地定义 f 一样而不是 f.call(1,2) 来旋转 f(1,2) ?