Proc 리터럴

Proc 리터럴 (Proc literal)

캡처된 블록(captured block)은 Proc 리터럴을 선언해서 그 메서드에 전달하는 것과 같아요. 기존 메서드로부터 Proc을 만드는 방법도 살펴볼게요.

출처: Crystal 공식 문서 — Proc literal

본문

캡처된 블록은 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

더 알아보기