나 자신은 반복의 차이의 명확한 정의를 찾고 발견 nil?, blank?그리고 empty?루비 온 레일즈. 내가 가장 가까이 온 것은 다음과 같습니다.
blank?객체가 거짓, 비어 있거나 공백 문자열입니다. 예를 들어,""," ",nil,[], 그리고{}비어 있습니다.nil?객체는 NilClass의 인스턴스입니다.empty?객체는 클래스마다 다르며 정의는 클래스마다 다릅니다. 문자열에 문자가 없으면 비어 있고 배열에 항목이 없으면 비어 있습니다.
빠뜨릴 수있는 것이 있습니까?
:nil?에 정의 ::Kernel및 재정의 ::NilClass하면서, :empty?많은 클래스에 별도로 구현 (기본적에 ::String, ::Array, ::Hash, 비 - 기본적으로 같은 다른 클래스에 ::Set다음 stdlib에서와 ::ActiveRecord::Relation레일에서). 따라서 :nil?클래스에 구체적으로 구현되거나 포함되어야 하는 자체 하위 클래스의 모든 하위 클래스 ::Object와 모든 클래스에서 사용할 수 있습니다. ::Kernel:empty?
nil개념 을 이해하려면 여기에서 시작하십시오 .
[1] pry(main)> [].blank? => true



present?.blank?빈 배열에 대해 true를 반환 하기 때문 입니다.