Ruby 치트시트
마지막 업데이트
Hello World 및 코드 실행
Ruby는 상용구가 필요 없습니다 - 한 줄이면 실행됩니다.
| 작업 | 문법 |
|---|---|
| 줄바꿈과 함께 출력 | puts "Hello, World!" |
| 줄바꿈 없이 출력 | print "Hello" |
| 값 검사 | p [1, 2, 3] |
| 문자열 보간 | puts "Hi #{name}" |
| 주석 | # this is a comment |
| 여러 줄 주석 | =begin ... =end |
| 파일 실행 | ruby app.rb |
| 대화형 셸 | irb |
변수 및 타입
Ruby는 동적 타입이며, 모든 것이 객체입니다.
| 작업 | 문법 |
|---|---|
| 지역 변수 | age = 30 |
| 상수 | PI = 3.14 |
| 인스턴스 변수 | @name = "Ada" |
| 전역 변수 | $count = 0 |
| 심볼 | :status |
| nil / 불리언 | nil, true, false |
| 타입 확인 | 42.class는 Integer를 반환 |
| 타입 변환 | "42".to_i, 42.to_s, "3.5".to_f |
문자열
문자열은 풍부한 메서드 집합을 가진 가변 객체입니다.
| 작업 | 문법 |
|---|---|
| 길이 | "hello".length |
| 대문자 / 소문자 | s.upcase, s.downcase |
| 공백 제거 | s.strip |
| 치환 | s.gsub("a", "b") |
| 배열로 분할 | "a,b,c".split(",") |
| 부분 문자열 포함 | s.include?("ell") |
| 문자 슬라이싱 | s[0..2] |
| 연결 | "foo" + "bar", s << "!" |
| 반복 | "ab" * 3 |
| 서식 지정 | format("%05d", 42) |
배열
순서가 있고 정수로 인덱싱되는 컬렉션.
| 작업 | 문법 |
|---|---|
| 생성 | nums = [1, 2, 3] |
| 인덱스로 접근 | nums[0], nums[-1] |
| 끝에 추가 | nums.push(4), nums << 4 |
| 끝에서 제거 | nums.pop |
| 길이 | nums.length |
| map | nums.map { |n| n * 2 } |
| 필터 | nums.select { |n| n.even? } |
| reduce | nums.reduce(0) { |sum, n| sum + n } |
| 정렬 | nums.sort |
| 문자열로 결합 | nums.join(", ") |
해시
키-값 컬렉션으로, 흔히 심볼을 키로 사용합니다.
| 작업 | 문법 |
|---|---|
| 생성 | user = { name: "Ada", age: 30 } |
| 값 접근 | user[:name] |
| 값 설정 | user[:email] = "a@x.com" |
| 키 확인 | user.key?(:name) |
| 키 삭제 | user.delete(:age) |
| 키 / 값 | user.keys, user.values |
| 순회 | user.each { |k, v| puts "#{k}: #{v}" } |
| 기본값 | Hash.new(0) |
| 병합 | h1.merge(h2) |
제어 흐름
조건문과 반복문. Ruby의 후위 한정자에 유의하세요.
| 작업 | 문법 |
|---|---|
| if / elsif / else | if x > 0 ... elsif x < 0 ... else ... end |
| 인라인 if (한정자) | puts "hi" if ready |
| unless | unless done ... end |
| 삼항 연산자 | x > 0 ? "pos" : "neg" |
| case / when | case n; when 1 then ...; else ...; end |
| while 반복문 | while i < 10 ... end |
| until 반복문 | until done ... end |
| times | 5.times { |i| puts i } |
| 범위 순회 | (1..5).each { |i| puts i } |
| break / next | break, next |
메서드
마지막 표현식이 암묵적으로 반환됩니다.
| 작업 | 문법 |
|---|---|
| 메서드 정의 | def add(a, b) ... end |
| 암묵적 반환 | def square(x) x * x end |
| 기본 인자 | def greet(name = "World") ... end |
| 키워드 인자 | def box(w:, h:) ... end |
| 스플랫 (가변 인자) | def sum(*nums) ... end |
| ? 로 끝나는 메서드 | def valid? ... end |
| ! 로 끝나는 메서드 | def normalize! ... end |
| 괄호 없이 호출 | greet "Ada" |
블록, proc 및 람다
블록은 메서드에 전달되는 코드 덩어리이고, proc과 람다는 그것을 저장합니다.
| 작업 | 문법 |
|---|---|
| 블록 (중괄호) | [1, 2].each { |n| puts n } |
| 블록 (do/end) | [1, 2].each do |n| puts n end |
| 블록에 yield | def run; yield; end |
| 블록 전달 여부 확인 | block_given? |
| 블록을 매개변수로 캡처 | def run(&blk); blk.call; end |
| proc 생성 | square = proc { |x| x * x } |
| 람다 생성 | square = ->(x) { x * x } |
| proc / 람다 호출 | square.call(3), square.(3) |
클래스 및 모듈
클래스는 상태와 동작을 담고, 모듈은 공유 메서드를 믹스인합니다.
| 작업 | 문법 |
|---|---|
| 클래스 정의 | class Point ... end |
| 생성자 | def initialize(x, y) @x = x; @y = y; end |
| 인스턴스 메서드 | def dist ... end |
| 접근자 단축 | attr_accessor :x, :y |
| 인스턴스 생성 | p = Point.new(1, 2) |
| 상속 | class Circle < Shape ... end |
| 클래스 메서드 | def self.origin ... end |
| 모듈 정의 | module Drawable ... end |
| 모듈 믹스인 | include Drawable |
| super 호출 | super(args) |
가장 자주 쓰는 Ruby 문법을 한 페이지에 담았습니다. 이 Ruby 치트시트는 언어 핵심을 위한 빠른 참조 자료입니다 - 변수와 타입, 문자열, 배열과 해시, 제어 흐름, 메서드, 그리고 Ruby를 매우 표현력 있게 만드는 블록, proc, 람다를 다룹니다.
여기 나오는 모든 내용은 순수 Ruby이며 어떤 표준 인터프리터에서도 실행됩니다. 필요한 것을 복사하거나, Ruby 플레이그라운드에서 모든 코드를 바로 실행해 보세요 - 설치가 필요 없습니다.
Ruby 치트시트 자주 묻는 질문
이 Ruby 치트시트는 무료인가요?
네. 이 Ruby 치트시트는 완전히 무료이며 회원 가입이 필요 없습니다. 즐겨찾기에 추가해 두고 문자열 메서드, 해시 연산, 블록 문법을 찾아봐야 할 때마다 다시 방문하세요.
블록, proc, 람다의 차이는 무엇인가요?
블록은
{ ... }나 do ... end로 메서드에 전달되는 익명 코드 덩어리입니다 - 그 자체로는 객체가 아닙니다. proc은 블록을 저장하고 여기저기 전달할 수 있는 호출 가능한 객체로 감쌉니다. lambda는 인자 개수를 엄격하게 검사하고 return을 람다 자신에서 반환하는 것으로 취급하는 특별한 proc인 반면, 일반 proc은 둘러싼 메서드에서 반환합니다.Ruby에서 심볼이란 무엇인가요?
:name 같은 심볼은 불변이며 재사용 가능한 식별자입니다. 같은 심볼은 항상 메모리에서 같은 객체를 가리키기 때문에, 해시 키나 메서드 이름 같은 용도에서 심볼은 문자열보다 빠르고 메모리 효율이 좋습니다 - 그래서 해시를 { name: "Ada" }처럼 작성하는 것을 자주 보게 됩니다.Ruby를 온라인에서 연습할 수 있나요?
네. Ruby 플레이그라운드를 열어 이 치트시트의 어떤 코드든 브라우저에서 실행해 보세요 - Ruby 설치가 필요 없습니다. 체계적으로 배우고 싶다면, Coddy의 무료 인터랙티브 Ruby 강좌가 변수와 문자열부터 블록과 클래스까지 단계별로 안내합니다.
이 치트시트는 초보자에게 적합한가요?
네. 가장 흔한 주제(변수, 문자열, 제어 흐름)부터 고급 주제(블록, proc, 클래스)까지 순서대로 정리되어 있어, 첫날부터 상단 섹션을 사용하고 점차 나머지로 넓혀갈 수 있습니다.