Ruby에서 BEGIN, END

2020-12-16 hit count image

Ruby에서 BEGIN, END 블록에 관해서 알아봅시다.

개요

Ruby의 BEGINEND에 대해서 알아보려고 합니다. BEGIN 블록은 프로그램을 개시하기 전에 실행할 문장을, END 블록은 프로그램 종료 직전에 실행할 문장을 지정합니다.

BEGIN 블록

BEGIN 블록으로 지정한 문장은 해당 파일의 다른 어떤 문장의 실행보다 먼저 실행됩니다

puts "Hello"
BEGIN { puts "World" }
# World
# Hello

여러 개의 BEGIN을 가지고 있는 경우, 선언한 순서대로 실행됩니다.

puts "Hello"
BEGIN { puts "World" }
BEGIN { puts "BEGIN" }
# World
# BEGIN
# Hello

BEGIN 블록은 로컬 변수 범위를 가지고 있으므로, 다른 로컬 변수와 값을 공유할 수 없습니다.

BEGIN {
  $a = 0
  b = 0
}
puts $a # Global Variable
puts b # Local Variable

# 0
# undefined local variable or method 'b' for main:Object (NameError)

END 블록

END 블록으로 지정한 문장은 모든 문장이 끝난 후 실행됩니다.

END { puts 5 }
puts 1
# 1
# 5

END 블록이 여러개인 경우 선언의 역순으로 호출됩니다.

END { puts 5 }
END { puts 3 }
puts 1
# 1
# 3
# 5

END 블록은 BEGIN 블록과 달리, 변수 범위를 공유합니다.

i = 1
END { puts i }
# 1

완료

Ruby에서 크게 활용되지는 않지만, 독특한 문법이므로 기억해두면 좋을거 같습니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

책 홍보

스무디 한 잔 마시며 끝내는 React Native 책을 출판한지 벌써 2년이 다되었네요.
이번에도 좋은 기회가 있어서 스무디 한 잔 마시며 끝내는 리액트 + TDD 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
Posts