Ruby 블록과 Lambda
Ruby의 블록(Block)과 Lambda에 대해 알아봅니다.
블록 (Blocks)
블록은 메서드 호출과 함께 코드 블록을 전달하는 방법입니다.
기본 사용법
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 }
블록 존재 여부 확인
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는 익명 함수를 만드는 방법입니다.
기본 사용법
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!"
Comments