本文简要介绍ruby语言中 Proc.curry
的用法。
用法
curry → a_proc
curry(arity) → a_proc
返回一个咖喱过程。如果给出了可选的arity
参数,则它确定参数的数量。一个 curried proc 接收一些参数。如果提供了足够数量的参数,它会将提供的参数传递给原始 proc 并返回结果。否则,返回另一个接受其余参数的 curried proc。
b = proc {|x, y, z| (x||0) + (y||0) + (z||0) }
p b.curry[1][2][3] #=> 6
p b.curry[1, 2][3, 4] #=> 6
p b.curry(5)[1][2][3][4][5] #=> 6
p b.curry(5)[1, 2][3, 4][5] #=> 6
p b.curry(1)[1] #=> 1
b = proc {|x, y, z, *w| (x||0) + (y||0) + (z||0) + w.inject(0, &:+) }
p b.curry[1][2][3] #=> 6
p b.curry[1, 2][3, 4] #=> 10
p b.curry(5)[1][2][3][4][5] #=> 15
p b.curry(5)[1, 2][3, 4][5] #=> 15
p b.curry(1)[1] #=> 1
b = lambda {|x, y, z| (x||0) + (y||0) + (z||0) }
p b.curry[1][2][3] #=> 6
p b.curry[1, 2][3, 4] #=> wrong number of arguments (given 4, expected 3)
p b.curry(5) #=> wrong number of arguments (given 5, expected 3)
p b.curry(1) #=> wrong number of arguments (given 1, expected 3)
b = lambda {|x, y, z, *w| (x||0) + (y||0) + (z||0) + w.inject(0, &:+) }
p b.curry[1][2][3] #=> 6
p b.curry[1, 2][3, 4] #=> 10
p b.curry(5)[1][2][3][4][5] #=> 15
p b.curry(5)[1, 2][3, 4][5] #=> 15
p b.curry(1) #=> wrong number of arguments (given 1, expected 3)
b = proc { :foo }
p b.curry[] #=> :foo
相关用法
- Ruby Proc.call用法及代码示例
- Ruby Proc.eql?用法及代码示例
- Ruby Proc.prc ==用法及代码示例
- Ruby Proc.ruby2_keywords用法及代码示例
- Ruby Proc.new用法及代码示例
- Ruby Proc.lambda?用法及代码示例
- Ruby Proc.arity用法及代码示例
- Ruby Proc.(params,...)用法及代码示例
- Ruby Proc.prc << g用法及代码示例
- Ruby Proc.parameters用法及代码示例
- Ruby Proc.binding用法及代码示例
- Ruby Proc.prc >>用法及代码示例
- Ruby Proc.prc[params,...]用法及代码示例
- Ruby Process.groups用法及代码示例
- Ruby Process.wait2用法及代码示例
- Ruby Process.getpgrp用法及代码示例
- Ruby Process.setproctitle用法及代码示例
- Ruby Process.setrlimit用法及代码示例
- Ruby Process.uid用法及代码示例
- Ruby Process.pid用法及代码示例
- Ruby Process.detach用法及代码示例
- Ruby Process.maxgroups用法及代码示例
- Ruby Process.clock_gettime用法及代码示例
- Ruby Process.exec用法及代码示例
- Ruby Process.groups=用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Proc.curry。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。