Files
ruby-examples/docs/02_기본 문법과 데이터 타입.md

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

unlessif 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의 객체지향 기능과 다양한 메서드를 활용해보자!