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