1. 기본 문법
출력
•
puts "Hello, World!" : 문자열을 출력하고 줄 바꿈
•
print "Hello" : 줄 바꿈 없이 출력
주석
•
한 줄 주석: # 여기에 주석을 작성
•
여러 줄 주석:
=begin
여러 줄 주석
=end
Ruby
복사
2. 변수와 데이터 타입
변수 선언
•
소문자로 시작: name = "Dora"
데이터 타입
•
정수 (Integer): x = 5
•
실수 (Float): pi = 3.14
•
문자열 (String): greeting = "Hello"
•
심볼 (Symbol): status = :active (메모리 효율적이며 고정된 객체)
•
배열 (Array): numbers = [1, 2, 3]
•
해시 (Hash): person = { "name" => "Dora", "age" => 25 }
3. 조건문과 논리
조건문
ruby
코드 복사
if age > 18
puts "Adult"
elsif age == 18
puts "Just became an adult"
else
puts "Minor"
end
Ruby
복사
•
한 줄 조건문: puts "Adult" if age > 18
논리 연산자
•
&&: 그리고
•
||: 또는
•
!: 부정
4. 반복문
while 루프
ruby
코드 복사
i = 0
while i < 5 do
puts i
i += 1
end
Ruby
복사
for 루프
for i in 0..5 do
puts i
end
Ruby
복사
times 메서드
5.times { puts "Hello!" }
Ruby
복사
5. 메서드
메서드 정의
def greet(name)
"Hello, #{name}!"
end
puts greet("Dora")
Ruby
복사
•
기본값 설정: def greet(name = "Guest")
반환값
•
루비는 마지막 식의 값을 자동으로 반환합니다.
•
return을 명시적으로 사용할 수 있습니다.
6. 클래스와 객체 지향 프로그래밍 (OOP)
클래스 정의
class Person
attr_accessor :name, :age
def initialize(name, age)
@name = name
@age = age
end
def greet
"Hi, I'm #{@name} and I'm #{@age} years old."
end
end
person = Person.new("Dora", 25)
puts person.greet
Ruby
복사
•
인스턴스 변수: @name은 객체의 속성을 의미합니다.
•
게터/세터 메서드: attr_accessor는 자동으로 게터와 세터를 생성합니다.
7. 모듈과 믹스인
모듈 정의
module Greetings
def say_hello
"Hello!"
end
end
class Person
include Greetings
end
person = Person.new
puts person.say_hello
Ruby
복사
•
모듈은 클래스에 믹스인하여 재사용할 수 있습니다.
8. 예외 처리
예외 처리 구조
begin
# 에러가 발생할 수 있는 코드
rescue => e
puts "Error: #{e.message}"
ensure
puts "이 코드는 항상 실행됩니다."
end
Ruby
복사
•
raise: 명시적으로 예외를 발생시킵니다.
9. 파일 입출력 (IO)
파일 읽기
contents = IO.read("my_file.txt")
puts contents
Ruby
복사
파일 쓰기
File.open("output.txt", "w") { |file| file.write("Hello, World!") }
Ruby
복사
10. 정규 표현식
정규 표현식 사용 예시
if "user_123".match(/^user_(\d+)/)
puts "Matched!"
end
Ruby
복사
•
match: 문자열이 정규 표현식과 일치하는지 확인합니다.
11. 상속과 클래스 계층
클래스 상속
class Animal
def speak
"Animal sound"
end
end
class Dog < Animal
def speak
"Bark!"
end
end
dog = Dog.new
puts dog.speak # "Bark!"
Ruby
복사
12. 메타 프로그래밍
method_missing 사용
class DynamicMethods
def method_missing(name, *args)
puts "Method #{name} was called with arguments: #{args.join(', ')}"
end
end
obj = DynamicMethods.new
obj.unknown_method("arg1", "arg2")
Ruby
복사
13. 기타 유용한 문법
스페이스십 연산자
puts 5 <=> 10 # -1
puts 10 <=> 10 # 0
puts 15 <=> 10 # 1
Ruby
복사
심볼과 문자열 변환
•
:symbol.to_s : 심볼을 문자열로 변환
•
"string".to_sym : 문자열을 심볼로 변환