Ruby 블록과 람다

발행: (2025년 12월 31일 오후 01:42 GMT+9)
2 min read
원문: Dev.to

Source: Dev.to

Ruby 블록(Block)

Ruby의 블록(Block)은 메서드 호출과 함께 코드 블록을 전달하는 방법입니다.

def call_block
  puts 'Start of method'
  yield
  yield
  puts 'End of method'
end

call_block { puts 'In the block' }

블록에 인자를 전달할 수도 있습니다.

def call_block
  yield('hello', 99)
end

call_block { |str, num| puts str + ' ' + num.to_s }

block_given? 로 블록 존재 여부를 확인할 수 있습니다.

def try
  if block_given?
    yield
  else
    puts "no block"
  end
end

try                        # => "no block"
try { puts "hello" }       # => "hello"
try do puts "hello" end    # => "hello"

블록 내부에서 사용되는 변수는 블록 외부와 별개의 스코프를 가집니다.

x = 10
5.times do |x|
  puts "x inside the block: #{x}"
end
puts "x outside the block: #{x}"

Lambda

Lambda는 익명 함수를 만드는 방법이며, lambda 혹은 -> 로 정의합니다.

prc = lambda { puts 'Hello' }
prc.call

여러 줄 Lambda

toast = lambda do
  'Cheers'
end
puts toast.call

Lambda를 메서드에 인자로 전달할 수도 있습니다.

def some_mtd(some_proc)
  puts 'Start of mtd'
  some_proc.call
  puts 'End of mtd'
end

say = lambda do
  puts 'Hello'
end

some_mtd(say)

인자를 받는 Lambda 예시:

a_Block = lambda { |x| "Hello #{x}!" }
puts a_Block.call('World')  # => "Hello World!"
Back to Blog

관련 글

더 보기 »

AWS 커뮤니티 데이 에콰도르 2025

행사 요약: 2025년 10월에 키토에서 AWS Community Day Ecuador가 개최되었습니다. 에너지와 스티커가 가득한 하루였으며, “serp...” 버전도 있었습니다.

소개 :)

About Me 안녕하세요, 제 첫 게시물과 소개에 오신 것을 환영합니다. 제 이름은 M4iR0N이며, 저는 Cyber Security와 Privacy Advocate라고 생각합니다. 집에서는 저는 …