4.8 KiB
Ruby 기본 문법과 데이터 타입
Ruby는 간결한 문법과 강력한 객체지향 기능을 갖춘 프로그래밍 언어다. 이 글에서는 Ruby의 기본적인 문법과 주요 데이터 타입을 설명한다.
1. Ruby의 기본 문법
1.1. 변수와 상수
Ruby에서 변수는 snake_case(소문자 + 밑줄)로 작성하는 것이 일반적이다. 변수 앞에 특정 기호를 붙이면 의미가 달라진다.
name = "Alice" # 일반 변수
$global_var = 10 # 전역 변수
@instance_var = 20 # 인스턴스 변수
@@class_var = 30 # 클래스 변수
상수는 대문자로 정의하며, 한 번 설정한 후 변경을 경고하지만 강제할 수는 없다.
PI = 3.14159
PI = 3.14 # 경고: 이미 정의된 상수를 변경
1.2. 출력 및 입력
Ruby에서는 puts, print, p 등을 사용하여 출력을 수행한다.
puts "Hello, Ruby!" # 줄 바꿈 포함 출력
print "Hello, " # 줄 바꿈 없이 출력
print "World!\n"
p [1, 2, 3] # 배열 출력 시 따옴표 포함
사용자로부터 입력을 받을 때는 gets를 사용한다.
print "이름을 입력하세요: "
name = gets.chomp # 개행 문자 제거
puts "반갑습니다, #{name}님!"
2. Ruby의 주요 데이터 타입
Ruby의 모든 것은 객체이며, 기본 데이터 타입도 객체로 다룬다.
2.1. 숫자(Number)
Ruby는 정수(Integer)와 실수(Float)를 지원한다.
int_num = 10 # 정수
float_num = 3.14 # 실수
puts int_num.class # Integer
puts float_num.class # Float
기본 연산
puts 10 + 5 # 덧셈 (15)
puts 10 - 5 # 뺄셈 (5)
puts 10 * 5 # 곱셈 (50)
puts 10 / 3 # 정수 나눗셈 (3)
puts 10.0 / 3 # 실수 나눗셈 (3.333...)
puts 10 % 3 # 나머지 (1)
puts 2 ** 3 # 제곱 (8)
2.2. 문자열(String)
문자열은 작은따옴표(') 또는 큰따옴표(")로 감싼다.
str1 = 'Hello'
str2 = "World"
puts str1 + " " + str2 # "Hello World"
puts "#{str1}, #{str2}!" # "Hello, World!"
puts str1.upcase # "HELLO"
puts str2.downcase # "world"
puts "Ruby".reverse # "ybuR"
큰따옴표(" ")에서는 **문자열 보간(interpolation)**이 가능하지만, 작은따옴표(' ')에서는 지원되지 않는다.
name = "Alice"
puts "안녕하세요, #{name}님!" # 가능
puts '안녕하세요, #{name}님!' # 그대로 출력됨
2.3. 심볼(Symbol)
심볼은 :name처럼 콜론(:)으로 시작하며, 변경되지 않는 고유한 문자열을 표현할 때 사용한다.
sym1 = :ruby
sym2 = :ruby
puts sym1 == sym2 # true (동일한 객체)
puts sym1.object_id == sym2.object_id # true
2.4. 배열(Array)
Ruby의 배열은 여러 개의 값을 순서대로 저장하는 자료구조다.
arr = [1, 2, 3, "Ruby", :symbol]
puts arr[0] # 1
puts arr[-1] # :symbol (마지막 요소)
puts arr.length # 5
배열 조작
arr << 6 # 요소 추가
arr.push(7) # 요소 추가
arr.pop # 마지막 요소 제거
arr.unshift(0) # 맨 앞에 요소 추가
arr.shift # 첫 번째 요소 제거
puts arr.inspect # [1, 2, 3, "Ruby", :symbol, 6]
2.5. 해시(Hash)
해시는 키-값 쌍으로 데이터를 저장하는 자료구조다.
person = { "name" => "Alice", "age" => 25 }
puts person["name"] # Alice
puts person["age"] # 25
심볼을 키로 사용할 수도 있다.
person = { name: "Alice", age: 25 }
puts person[:name] # Alice
해시 조작
person[:city] = "Seoul" # 새 키-값 추가
puts person.keys # [:name, :age, :city]
puts person.values # ["Alice", 25, "Seoul"]
3. 제어문
3.1. 조건문(if, unless, case)
age = 20
if age >= 18
puts "성인입니다."
elsif age >= 13
puts "청소년입니다."
else
puts "어린이입니다."
end
unless는 if not과 같은 역할을 한다.
unless age < 18
puts "성인입니다."
end
case 문을 사용하면 여러 조건을 간결하게 표현할 수 있다.
grade = "A"
case grade
when "A"
puts "우수합니다."
when "B"
puts "좋습니다."
else
puts "더 노력하세요."
end
3.2. 반복문(while, until, for, each)
i = 1
while i <= 5
puts i
i += 1
end
each를 사용하면 더 간결하게 반복할 수 있다.
[1, 2, 3, 4, 5].each do |num|
puts num
end
4. 마무리
Ruby는 간결하면서도 강력한 문법을 제공하는 언어다. 변수, 문자열, 배열, 해시 등 다양한 데이터 타입을 활용하면 유연한 코드를 작성할 수 있다. 기본 문법을 익혔다면, 이제 실습을 통해 Ruby의 객체지향 기능과 다양한 메서드를 활용해보자!