Ruby 블록과 Lambda

Published: (December 30, 2025 at 11:42 PM EST)
2 min read
Source: 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

Related posts

Read more »

Ruby 기초 - 문법과 기본 개념

Ruby 프로그래밍 언어의 기본 문법과 개념을 알아봅니다. 파일 및 실행 ruby 파일 형식: 파일명.rb 실행 방법: ruby 파일명.rb 확장자가 rb가 아니어도 실행 가능 주석 ruby 한 줄 주석 =begin 여러 줄 주석 =end 줄바꿈 및 명령 구분 ruby 줄바꿈 puts...

Ruby 제어문 - 조건문과 반복문

조건문 ruby s1 = 'Jonathan' s2 = 'Jonathan' s3 = s1 if s1 == s2 puts 'Both Strings have identical content' else puts 'Both Strings do not have identical content'...

Nobody Knows What's Happening Anymore

!Cover image for Nobody Knows What's Happening Anymorehttps://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2...