Ruby는 동적 타입 언어입니다 — 변수는 타입을 선언하지 않으며 어떤 값이든 담을 수 있습니다. Ruby에는 여러 기본 타입(모두 객체)이 있으며, 명명 규칙(sigil)을 사용해 변수의 스코프를 나타냅니다.
변수와 동적 타이핑
count = 42 # 타입 선언 없음 — 추론됨
name = "Ann"
count = "now a string" # 동적 타입 — 타입을 바꿀 수 있음
42 # Integer
3.14 # Float
"hello" # String
:symbol # Symbol (불변이며 인터닝된 식별자)
true / false # Boolean (TrueClass / FalseClass)
nil # NilClass — "아무것도 없음" (Ruby의 null)
[1, 2, 3] # Array
{ a: 1 } # Hash (키-값)
1..10 # Range
name = "local" # 지역 변수 (소문자)
@instance = "instance" # @ → 인스턴스 변수 (객체마다)
@@class_var = "class" # @@ → 클래스 변수 (인스턴스들이 공유)
$global = "global" # $ → 전역 변수 (지양)
CONSTANT = "constant" # 대문자 시작 → 상수 (관례; 경고와 함께 변경 가능)
Ruby는 sigil(접두사)을 사용해 변수 스코프를 표시합니다. 일반 이름은 지역 변수, @는 인스턴스 변수, @@는 클래스 변수, $는 전역 변수(권장되지 않음), 대문자는 상수입니다. 이는 독특한 점으로 — 접두사만 보면 스코프를 한눈에 알 수 있습니다.
# Ruby에서는 false와 nil만 거짓이며 — 그 외 모든 것은 참입니다
puts "truthy" if 0 # 출력됨 — Ruby에서 0은 참입니다! (많은 언어와 달리)
puts "truthy" if "" # 출력됨 — 빈 문자열도 참입니다
puts "falsy" unless nil # nil은 거짓
Ruby에서는 false와 nil만이 거짓입니다 — 0, "", []는 모두 참입니다(0이나 빈 값이 거짓인 많은 언어와 다름). 흔한 함정입니다.
Ruby의 변수와 기본 타입을 이해하는 것은 기본적인 일상 지식입니다.
Ruby는 동적 타입(변수가 어떤 값이든 담으며, 타입 선언이 없음)이고, 독특한 특징은 명명 규칙(sigil)을 사용해 변수 스코프를 나타낸다는 점입니다 — @는 인스턴스 변수, @@는 클래스 변수, $는 전역, 대문자는 상수 — 따라서 변수의 접두사가 그 스코프를 한눈에 알려주며, 이는 Ruby를 올바르게 읽고 쓰는 데 중요합니다(특히 클래스에서 끊임없이 사용되는 @instance 변수).
기본 타입들(Ruby의 순수 객체 지향 모델에서 모두 객체임) — 독특한 Symbol 타입을 포함하여 — 을 아는 것은 데이터를 다루는 데 필요합니다.
특히 중요하게 이해해야 할 특이점은 Ruby의 **참 같음(truthiness)**입니다: false와 nil만이 거짓이며, 나머지 모든 것(0, "", [] 포함)은 참입니다 — 이는 (0이나 빈 값이 거짓인) 많은 언어와 다르며, 다른 언어 출신 개발자에게 흔한 버그의 원인이 됩니다.
동적 타이핑, 스코프를 나타내는 명명 규칙, 기본 타입, 그리고 특히 false-와-nil-만 거짓 규칙을 이해하는 것은 올바른 Ruby를 작성하고 흔한 함정을 피하는 데 기초가 되므로, 이 언어에서 반드시 알아야 할 필수 지식입니다.