Ruby 블록과 람다

발행: (2025년 12월 31일 오후 01:42 GMT+9)
2 분 소요
원문: 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

관련 글

더 보기 »

이상한.website

번역할 텍스트를 제공해 주시겠어요? 텍스트를 알려주시면 한국어로 번역해 드리겠습니다.

RGB LED 사이드퀘스트 💡

markdown !Jennifer Davis https://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%...