본문 바로가기

개발/Ruby on Rails

Ruby : 기초(1) 변수

반응형

입사하게 된 회사에서 레일즈를 쓰고 있지만,
여태까지 루비를 한 번도 써본 적이 없는 언어라 공부하면서 정리 차원에서 글을 썼습니다.
공부하면서 쓰고 있는 글이기 때문에, 틀린 부분이 있을 수 있습니다(발견하시면 댓글로 알려주세요!).

* 기본적으로 프로그래밍에 대한 지식이 어느 정도 있음을 전제로 쓴 글입니다.

변수 타입

루비는 숫자형(Integer, Float)와 문자형(String), 부울 값(true, false), 그리고 값이 없음(nil)이 있습니다.
다만 선언할 때 타입을 따로 구분하지는 않습니다.

작명 규칙

작명은 코딩 스타일에 따라 다르겠지만, 기본적으로 대부분의 값은 스네이크 표기법(apple_banana)을 따릅니다.
클래스는 파스칼 표시법(AppleBanana)을 따릅니다.

상수 선언은 대문자로 작성합니다. VERSION = 1
전역 변수를 선언하려면 $를 붙입니다. $globalVar = 10
지역 변수는 그냥 그대로 쓰면 됩니다. localVar = 10
인스턴스 변수(한 객체 내부에서 사용하는 변수)는 @를 붙입니다. @insVar = 10
클래스 변수(같은 클래스끼리 공유가 가능한 변수)는 @@를 붙입니다. @@classVar = 10

부울 값, 루비는 0도 참

루비의 부울 값은 truefalse입니다.
다른 언어와의 차이점이 있다면 루비에서 0은 거짓이 아닙니다.
루비에서 거짓(false)로 보는 값은 nilfalse뿐입니다.

값이 없음

루비에서는 값이 없음을 나타내는 예약어로 nil을 사용합니다.
여태까지 null을 사용해와서 그런지 좀 익숙하지 않네요.

변수 선언

루비는 변수를 선언할 때 타입 선언과 같은 예약어가 필요 없습니다.
같은 변수에 다른 형태의 값을 넣을 수 있는 것으로 볼 때, 루비의 변수는 타입 구분이 없는 것으로 보입니다.
예약어를 못 쓰는 것은 아닙니다.

a = 1 # a 변수에 정수 1을 할당
b = 2.5 # b 변수에 부동소수점 2.5을 할당
c = "ruby" # c 변수에 문자열 ruby를 할당
d = "1" # d 변수에 문자열 1을 할당
String e = 9 # e 변수에 문자열 9를 할당

여기서 확인 가능한 건, 따옴표로 감싸거나 선언을 String으로 하면, 숫자를 넣어도 문자열이 된다는 점입니다.
그러나 자바스크립트처럼 1=="1"true가 되지는 않습니다.

다중 대입

루비는 다중 대입을 지원합니다.

a, b = 1, 2 # a=1, b=2 할당

문자열에서 변수 사용하기

문자열 안에서 변수, 혹은 연산을 사용하고 싶을 때, #{ }을 사용합니다.

puts "저는 " + name + "입니다." # 불필요한 덧셈 기호가 보기 불편하다
puts "저는 #{name}입니다." # 깔끔하게 한 문장이 되었다

퍼센트 기호로 표현

루비는 %( )기호를 사용해 여러 표현이 가능합니다.

%q("abc#{2+3}\d") # \"abc#{2+3}\\d\" 문자열로 변환(모든 특수문자 무시)
%Q("abc#{2+3}\d") # \"abc5d\"" 문자열로 변환(백슬래시와 치환 이외 무시)
%w(apple banana carrot) # 배열["apple", "banana", "carrot"]으로 변환
%r(ap{2,3}le?) # 정규식 /ap{2,3}le?/ 으로 변환
%s(#{apple}) # 심볼 :"#{apple}" 로 변환(치환자 무시)
%i(a b c) # 심볼 배열 [:a, :b, :c]로 변환

등등..

범위

루비에서는 범위를 쉽게 표현할 수 있습니다.
온점이 두 개면 마지막 값까지 포함(<=)하고, 온점이 세 개면 마지막 값을 포함하지 않습(<)니다.

1..5 # 1부터 5까지(1,2,3,4,5)
1...5 # 1부터 5의 전까지(1,2,3,4)

'개발 > Ruby on Rails' 카테고리의 다른 글

Ruby : 기초(6) 클래스  (0) 2020.03.14
Ruby : 기초(5) 메소드  (0) 2020.03.14
Ruby : 기초(4) 해시와 심볼  (0) 2020.03.14
Ruby : 기초(3) 반복  (0) 2020.03.13
Ruby : 기초(2) 연산  (0) 2020.03.13