programing

루비에서 0 대 빈 대 빈 대 빈을 이해하는 방법

minimums 2023. 6. 2. 20:20
반응형

루비에서 0 대 빈 대 빈 대 빈을 이해하는 방법

저는 반복적으로 차이에 대한 명확한 정의를 찾고 있는 제 자신을 발견합니다.nil?,blank?,그리고.empty?루비 온 레일즈에서.제가 가장 가까이 온 것은 다음과 같습니다.

  • blank?개체가 false이거나 비어 있거나 공백 문자열입니다.를 들면, 들면를예,""," ",nil,[],그리고.{}공백입니다.

  • nil?객체는 NilClass의 인스턴스입니다.

  • empty?개체는 클래스에 따라 다르며 정의는 클래스마다 다릅니다.문자열에 문자가 없으면 비어 있고 항목이 없으면 배열이 비어 있습니다.

부족한 부분이 있거나 더 엄격한 비교가 가능합니까?

.nil?모든 개체에 사용할 수 있으며 개체가 0인 경우 true입니다.

.empty?문자열, 배열 및 해시에 사용할 수 있으며 다음과 같은 경우 true를 반환합니다.

  • 문자열 길이 == 0
  • 배열 길이 == 0
  • 해시 길이 == 0

중입니다..empty?0이 아닌 것에 던져질 것입니다.NoMethodError.

거기서.blank?들어옵니다.Rails에 의해 구현되며 다음과 같은 작업뿐만 아니라 모든 객체에서 작동합니다..empty?문자열, 배열 및 해시에 있습니다.

nil.blank? == true
false.blank? == true
[].blank? == true
{}.blank? == true
"".blank? == true
5.blank? == false
0.blank? == false

.blank?또한 비어 있지 않지만 공백만 포함된 문자열에 대해서도 true로 평가됩니다.

"  ".blank? == true
"  ".empty? == false

을 제공합니다. .present?은 그은부 반다니합환의 합니다..blank?.

열배 gotcha:blank?돌아올 것입니다false배열의 모든 요소가 공백인 경우에도 마찬가지입니다.이 경우 빈칸을 확인하려면 다음을 사용합니다.all?와 함께blank?예:

[ nil, '' ].blank? == false
[ nil, '' ].all? &:blank? == true 

저는 모든 경우를 포함하여 이 유용한 테이블을 만들었습니다.

여기에 이미지 설명 입력

blank?,present?Rails에서 제공합니다.

줄리안의 테이블을 확장하기만 하면 됩니다.

여기에 이미지 설명 입력

참조: 비어 있습니까? 비어 있습니까? 닐?傻傻分不清楚

팁: 빠른팁:!obj.blank? == obj.present?

일부 표현에서 눈에 편리하고 쉽게 사용할 수 있습니다.

여기에 이미지 설명 입력

  • 있는 모든 것nil?이라blank?
  • 있는 모든 것empty?이라blank?
  • 아무것도 아닙니다.empty?이라nil?
  • 아무것도 아닙니다.nil?이라empty?

;dr -- 전용만 사용합니다.blank?&present?구별하고 싶지 않다면""그리고." "

한 가지 다른 점은.nil?그리고..empty?프로그래밍 언어 루비에 의해 제공되는 방법인 반면,.blank?는 웹 개발 프레임워크 Rails에 의해 추가된 입니다.

특별한 경우는 부울 값이 0인지 평가하려고 할 때입니다.

false.present? == false
false.blank? == true
false.nil? == false

에는 이경권사항다같습음니다과은장우다같을 사용하는 것이 좋습니다..nil?

그에 대한 약간의 메모입니다.any?권장 사항:의 말이 맞아요 일반적으로 그것은!empty? .만지하,any?돌아올 것입니다true 한줄 공으로백의al▁(a (ala))로 이동합니다." ").

그리고 물론 위의 1.9 댓글도 참고하세요.

any?은 일반적으로 으로적반일▁is입니다.!empty?레일에서 나는 일반적으로 문 끝에 다음과 같은 것이 있는지 확인합니다.if something또는unless something그 다음에 사용blank?어디서나 작동하는 것처럼 보이기 때문에 필요한 곳에.

nil?할 수 로, 모메객든다니는체 반환합니다.true가 목이그면다인 nil:

b = nil
b.nil? # => true

empty?String, Arrays 및 Hashes와 같은 일부 객체에 대해 호출할 수 있는 표준 Ruby 메서드입니다.true이러한 개체에 요소가 없는 경우:

a = []
a.empty? # => true

b = ["2","4"]
b.empty? # => false

empty?에 할 수 없습니다.nil물건들.

blank?는 메할수있는서입니 Rails에서 할 수 입니다.nil개체 및 빈 개체.

다른 모든 사람들은 무엇이 다른지 잘 설명했습니다.

루비 온 레일즈를 추가하고 싶습니다, 사용하는 것이 더 좋습니다.obj.blank?또는obj.present?obj.nil?또는obj.empty?.

obj.blank? 유형을 합니다.nil,'',[],{} 와리즈턴을 반환합니다.true값을 사용할 수 없고 반환되는 경우false모든 유형의 개체에서 값을 사용할 수 있는 경우.

이 질문에 대한 답변은 n개가 있지만 여기서 설명하는 방식이 마음에 들어서 답변을 하나 더 올렸습니다 :-)

아래의 데이터 메트릭을 보십시오. 사용 가능한 여러 방법에 사용되는 다양한 데이터 유형에 대한 자체 설명입니다.

#설렘? # 비어있나요? # 빈칸? #선물?
5 거짓의 메서드 오류 없음 거짓의 진실의
"" 거짓의 진실의 진실의 거짓의
" " 거짓의 거짓의 진실의 거짓의
"\t\n" 거짓의 거짓의 진실의 거짓의
[] 거짓의 진실의 진실의 거짓의
["a"] 거짓의 거짓의 거짓의 진실의
{} 거짓의 진실의 진실의 거짓의
{a: "b"} 거짓의 거짓의 거짓의 진실의
세트.신규 거짓의 진실의 진실의 거짓의
영의 진실의 메서드 오류 없음 진실의 거짓의
진실의 거짓의 메서드 오류 없음 거짓의 진실의
거짓의 거짓의 메서드 오류 없음 진실의 거짓의

참조: https://blog.appsignal.com/2018/09/11/differences-between-nil-empty-blank-and-present.html

exists?데이터베이스에 데이터가 존재하는지 여부를 확인하는 데 사용할 수 있습니다.합니다.true또는false.

레일 4

@corban-brook의 'Array gotcha: blank?' 대신 배열에 빈 값만 포함되어 있고 공백으로 간주될 수 있는지 확인할 수 있습니다. true:

[ nil, '' ].all? &:blank? == true

다음을 수행할 수도 있습니다.

[nil, '', "", " ",' '].reject(&:blank?).blank? == true

nil?모든 개체에 사용할 수 있습니다.개체에 '공백' 값을 포함하여 값이 있는지 여부를 결정합니다.

예:

example = nil
example.nil?  # true

"".nil?  # false

으로 기적으로.nil?개체가 실제로 'proxy'와 동일한 경우에만 true가 반환됩니다.

empty?컬렉션으로 간주되는 개체에서만 호출됩니다.여기에는 문자열(문자 모음), 해시(키/값 쌍 모음) 및 배열(임의 개체 모음)과 같은 항목이 포함됩니다. empty?컬렉션에 항목이 없는 경우 true를 반환합니다.

예:

"".empty? # true
"hi".empty?   # false
{}.empty?  # true
{"" => ""}.empty?   # false
[].empty?   # true
[nil].empty?  # false

nil.empty?  # NoMethodError: undefined method `empty?' for nil:NilClass

:empty?수 합니다.

또한 컬렉션의 항목이 비어 있더라도 컬렉션이 비어 있는 것은 아닙니다.

blank?으로 기적으의조다니입합로본다▁of의 입니다.nil?그리고.empty?이 기능은 컬렉션이라고 가정하는 개체를 확인하는 데 유용하지만 0일 수도 있습니다.

언급URL : https://stackoverflow.com/questions/885414/how-to-understand-nil-vs-empty-vs-blank-in-ruby

반응형