나 자신은 반복의 차이의 명확한 정의를 찾고 발견 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를 반환 하기 때문 입니다.