为了理解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
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的事情
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)
Run Code Online (Sandbox Code Playgroud)
我以为f现在是Proc,我可以称之为。但显然是“在foo中:错误的参数数量(0表示2)(ArgumentError)”
我必须使用什么语法?并且有可能返回一个“真实的”函数而不是Proc,以便代替f.call(1,2)我可以像我刚刚正常定义f一样缠绕f(1,2)吗?