跳至内容

Proc 字面量

捕获的代码块与声明一个 Proc 字面量 然后 传递 给方法是一样的。

def some_proc(&block : Int32 -> Int32)
  block
end

x = 0
proc = ->(i : Int32) { x += i }
proc = some_proc(&proc)
proc.call(1)  # => 1
proc.call(10) # => 11
x             # => 11

正如 Proc 字面量 部分所解释的,Proc 也可以从现有的方法创建。

def add(x, y)
  x + y
end

adder = ->add(Int32, Int32)
adder.call(1, 2) # => 3