본문 바로가기

RUBY ON RAILS

Ruby의 기본 문법 (변수와 배열)

안녕하세요 멋사3기 Kyunni입니다.

지난 포스팅에 이어서 네 번째 강의에 대한 포스팅을 진행합니다. 강의에서 메인으로 학습하였던 루비의 문법에 대해 주요하게 다루어 보도록 하겠습니다. :)

Ruby에서 가장 기초가 되는 변수의 사용법과 배열의 사용법 및 관련 함수들에 대해 알아보겠습니다.

(프로젝트명: test, 컨트롤러명: lion, 액션명: kyunni.erb)


변수(Variable)

Ruby의 변수는 크게 네 가지로 분류됩니다. 참고로 루비에는 변수의 선언이 존재하지 않습니다.

 var

 지역 변수

 - 이름이 소문자나 밑줄(_)로 시작
 - 인스턴스 변수나 전역변수와는 다르게 초기화전 nil 값을 가지고 있지 않음
   (NameError 예외 발생)

 @var

 인스턴스 변수

 - 변수 영역은 self가 가리키는 객체 내부로 제한 (public이 아님)
 - 선언이 불가하므로, 처음 값이 대입될 때 동적으로 객체에 추가됨

 @@var

 클래스 변수

 - 해당 클래스의 모든 객체가 공유하며, 클래스 메서드를 통해 접근 가능
 - 사용 전, 반드시 초기화 해야 함 (일반적으로 클래스 정의 시, 간단한 대입문 사용)

 $var

 젼역 변수

 - 프로그램의 어떠한 곳에서도 사용 가능
 - 초기화 하지 않은 전역 변수는 nil 값을 지님 


이제 직접 변수를 생성하고, erb 파일에서 사용하는 방법에 대하여 알아보도록 하겠습니다. 

1. controller에서 변수에 값 대입하기

주석의 설명과 같이, hello라는 인스턴스 변수인 @hello 에 "Hello world!"라는 문자열을 대입한 코드 입니다. 

2. action에서 변수 출력하기

erb 파일에서 변수를 출력해주기 위해선, <%= %>라는 형태로 변수를 감싸주어야 합니다.

# 참고로, <% %> 의 형태를 만나면, 프로그램이 이제부터 Ruby 문법으로 해석하겠다! 라고 받아들이게 됩니다. 
# <% %>은 Ruby 문법임을 알려주는 형태이고, <%= %>은 이 형태 안의 Ruby 내용을 출력하겠다는 의미입니다.

[결과 화면]

변수에 대입된 문자열이 출력됨을 확인해볼 수 있습니다.


배열(Array)

아래의 코드는 루비에서 배열을 사용하는 방법입니다.

@변수명 = [요소1, 요소2, 요소3, …, ]

ex) @arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

하나의 배열에는 다양한 타입의 객체가 들어갈 수 있습니다. 

1. 배열에서 랜덤 값 추출하기

@변수명 = [요소1, 요소2, 요소3, …, ].sample

ex) @sam = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].sample

@sam이라는 인스턴스 변수에 한 개의 샘플된 값이 대입됩니다.

2. 배열에서 n개의 랜던 값 추출하기

@변수명 = [요소1, 요소2, 요소3, …, ].sample(n)

ex) @samtwo = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].sample(2)

@samtwo라는 인스턴스 변수에 두 개의 샘플된 값이 대입됩니다.

[결과화면_2]

3. 범위로 배열 대입하기

@변수명 = (start .. end).to_a

ex) @bum = (1..45).to_a

코드 설명을 간단히 하자면, 1부터 45까지의 범위를 to_a라는 함수를 통해서 배열로 변환을 해준 후에, 이를 @bum이라는 변수에 대입해주었음을 의미합니다.


3. 배열 정렬하기

@변수명 = (start .. end).to_a.sample(n).sort

ex) @sorting = (1..45).to_a.sample(5).sort

n개의 랜덤 값이 오름차순으로 정렬됩니다.

[결과화면_3]