Ruby中的闭包

bur*_*lsm 12 ruby closures

我对闭包有点麻烦,我想知道规范的make-adder过程的等效代码在Ruby中是什么.

在计划中它将是:

(define (make-adder n)
 (lambda (x) (+ x n))
Run Code Online (Sandbox Code Playgroud)

Dig*_*oss 17

它实际上非常接近......

def make_addr n
  lambda { |x| x + n }
end
t = make_addr 100
t.call 1
101
Run Code Online (Sandbox Code Playgroud)

在1.9你可以使用......

def make_addr n
  ->(x) { x + n }
end
Run Code Online (Sandbox Code Playgroud)