TrueClass

TrueClass (true 객체의 클래스)

true라는 싱글턴 객체의 클래스가 바로 TrueClass예요. Ruby에서는 true 값이 그냥 하나뿐인 객체로 존재하는데, 그 객체가 속한 클래스가 이거예요.

출처: Ruby 3.3 API

본문

TrueClass에는 몇 가지 메서드가 연산자(operator)처럼 동작해요.

  • & (and)
  • | (or)
  • === (case 동등 연산자)
  • ^ (xor)

그리고 그 밖에 to_s와 그 별칭(alias)인 inspect 메서드가 있어요.

true & object → true or false

objectfalsenil이면 false를, 그 외에는 true를 돌려줘요.

true & Object.new  # => true
true & false       # => false
true & nil         # => false

true === other → true or false (및 false === other, nil === other)

truefalse를 돌려줘요. Object#==와 비슷하게, objectObject의 인스턴스(그 많은 서브클래스 중 하나가 아니라)일 때 동작해요. 이 메서드는 서브클래스들이 case 문에서 의미 있는 동작을 하도록 흔히 오버라이드하는 메서드예요.

true ^ object → !object

objectfalsenil이면 true를, 그 외에는 false를 돌려줘요.

true ^ Object.new  # => false
true ^ false       # => true
true ^ nil         # => true

true | object → true

항상 true를 돌려줘요.

true | Object.new  # => true
true | false       # => true
true | nil         # => true

여기서 주의할 점이 있어요. |인자를 반드시 평가(evaluate) 해요. 단락 평가(short-circuit) 연산자인 ||는 필요할 때만 오른쪽 피연산자를 평가하니까 둘은 서로 달라요.

true | raise   # => RuntimeError 발생
true || raise  # => true

true || raise에서는 true가 이미 참이라 raise가 실행되지 않아요. 하지만 true | raise는 인자를 무조건 평가하므로 예외가 발생해요.

to_s → 'true'

문자열 'true'를 돌려줘요.

true.to_s  # => "true"

TrueClass#inspectTrueClass#to_s의 별칭(alias)이에요.