Menu
Coddy logo textTech

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.classInteger를 반환
타입 변환"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
mapnums.map { |n| n * 2 }
필터nums.select { |n| n.even? }
reducenums.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 / elseif x > 0 ... elsif x < 0 ... else ... end
인라인 if (한정자)puts "hi" if ready
unlessunless done ... end
삼항 연산자x > 0 ? "pos" : "neg"
case / whencase n; when 1 then ...; else ...; end
while 반복문while i < 10 ... end
until 반복문until done ... end
times5.times { |i| puts i }
범위 순회(1..5).each { |i| puts i }
break / nextbreak, 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
블록에 yielddef 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, 클래스)까지 순서대로 정리되어 있어, 첫날부터 상단 섹션을 사용하고 점차 나머지로 넓혀갈 수 있습니다.
Coddy programming languages illustration

Coddy로 Ruby 배우기

시작하기