#nil? #empty? #blank? #present?

Ruby 에는 존재 여부를 확인 할 때 위와 같은 네가지의 메소드를 사용합니다.

이 메소드들은 조금씩 차이점이 존재하는데 어떤 건지 알아봅시다.


#nil?

#nil? 은 Object 클래스의 메소드입니다.

Ruby 의 모든 클래스는 Object 메소드를 상속 받기 때문에 #nil? 은 어떤 클래스에서도 사용할 수 있습니다.

NilClass 값에 대해서만 true 를 리턴하고 이 외에는 전부 false 를 리턴합니다.

nil.nil?    # true

true.nil?   # false

5.nil?      # false

"".nil?     # false

[].nil?     # flase


#empty?

#empty? 는 string, array, hash, set 에서 사용되는 메소드입니다.

자료구조나 문자열의 길이가 0 일 때 true 를 리턴합니다.

nil 처럼 #empty? 메소드가 정의되어 있지 않은 오브젝트에서 사용하면 NoMethodError 가 발생합니다.

"".empty?           # true

" ".empty?          # false

"\t\n".empty?       # false

[].empty?           # true

{}.empty?           # true

Set.new.empty?      # true


#blank?

#blank? 는 Rails 메소드이며 모든 오브젝트에서 사용 가능합니다.

문자열에서 사용할 경우 빈 문자열 뿐만 아니라 공백까지 전부 true 로 리턴합니다.

"".blank?       # true

" ".blank?      # true

"\t\n".blank?   # true


array, hash, set 에서는 #empty? 와 동일하게 원소가 없는 경우에 true 를 리턴합니다.

[].blank?       # true

{}.blank?       # true

Set.new.blank?  # true

[nil].blank?    # false

["", ""].blank? # false


true, false, nil 값에 대해서 각각 다음과 같이 리턴합니다.

true.blank?     # false

false.blank?    # true

nil.blank?      # true


#present?

#present? 는 #blank? 와 완전히 반대되며, 마찬가지로 Rails 메소드입니다.


Table


Diagram


Reference


+ Recent posts