Ruby复合函数_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Ruby复合函数

Ruby复合函数

 2010/12/30 8:05:58  fuliang  http://fuliang.javaeye.com  我要评论(0)
  • 摘要:复合函数的意思就是:有函数:f(x)=x+1;g(x)=x*x则g(f(x))=(x+1)*(x+1)我们给Ruby的打开Proc类:classProcdefself.compose(f,g)lambda{|*args|f[g[*args]]}enddef*(g)Proc.compose(self,g)endendinc=lambda{|x|x+1}square=lambda{|x|x*x}square_inc=square*incsquare_inc(2)#=>9
  • 标签:函数 Ruby
复合函数的意思就是:
有函数:
f(x)=x + 1;
g(x)=x * x
则g(f(x)) = (x + 1) * (x + 1)
我们给Ruby的打开Proc类:
class Proc
  def self.compose(f, g)
    lambda { |*args| f[g[*args]] }
  end
  def *(g)
    Proc.compose(self, g)
  end
end

inc = lambda { |x| x + 1 }
square = lambda{ |x| x * x}

square_inc = square * inc
square_inc(2) #=> 9
发表评论
用户名: 匿名