NilClass

NilClass

싱글턴 객체 nil의 클래스예요.

출처: Ruby 3.3 API

본문

nil은 그 자체로 하나뿐인 객체라서, nil의 클래스는 바로 NilClass예요. nil의 여러 메서드는 연산자처럼 동작해요.

  • `&`
  • `|`
  • `===`
  • `=~`
  • `^`

다른 것들은 nullity(없음)이라는 개념을 다른 클래스로 전달하는 변환자(converter)처럼 동작해요.

  • `rationalize`
  • `to_a`
  • `to_c`
  • `to_h`
  • `to_r`
  • `to_s`

또 다른 메서드는 검사(inspection)를 제공해요.

  • `inspect`

마지막으로 질의(query) 메서드 하나가 있어요.

  • `nil?`

Public Instance Methods

false & object → false, nil & object → false

항상 false를 돌려줘요.

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

인자 object는 평가되어요.

false & raise # Raises RuntimeError.

true === other → true or false, false === other → true or false, nil === other → true or false

true 또는 false를 돌려줘요.

Object#==와 비슷하게, objectObject의 인스턴스이면서 (그 많은 하위 클래스의 인스턴스는 아닌 경우) 그렇게 동작해요.

이 메서드는 보통 그 하위 클래스들에서 재정의되어, case 문 안에서 의미 있는 동작을 제공해요.

nil =~ object → nil

항상 nil을 돌려줘요.

이 덕분에 이런 코드를 자연스럽게 쓸 수 있어요.

while gets =~ /re/
  # ...
end

false ^ object → true or false, nil ^ object → true or false

objectnil이거나 false라면 false를, 그 외에는 true를 돌려줘요.

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

inspect → 'nil'

문자열 'nil'을 돌려줘요.

nil.inspect # => "nil"

nil? → true

항상 true를 돌려줘요. 다른 모든 객체에서 nil? 메서드는 false를 돌려줘요.

rationalize(eps = nil) → (0/1)

영(0)을 Rational로 돌려줘요.

nil.rationalize # => (0/1)

인자 eps는 무시돼요.

to_a → []

Array를 돌려줘요.

nil.to_a # => []

to_c → (0+0i)

영(0)을 Complex로 돌려줘요.

nil.to_c # => (0+0i)

to_d → bigdecimal

nilBigDecimal로 나타낸 값을 돌려줘요.

require 'bigdecimal'
require 'bigdecimal/util'

nil.to_d   # => 0.0

to_f → 0.0

항상 영(0)을 돌려줘요.

nil.to_f   #=> 0.0

to_h → {}

Hash를 돌려줘요.

nil.to_h   #=> {}

to_i → 0

항상 영(0)을 돌려줘요.

nil.to_i   #=> 0

to_r → (0/1)

영(0)을 Rational로 돌려줘요.

nil.to_r # => (0/1)

to_s → ''

String을 돌려줘요.

nil.to_s # => ""

false | object → true or false, nil | object → true or false

objectnil이거나 false라면 false를, 그 외에는 true를 돌려줘요.

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

더 알아보기

  • nil을 만드는 리터럴과 truthy/falsy 개념은 literals 문서에서 확인하세요.
  • Object#nil? 메서드도 함께 보세요.