루비에서 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
'programing' 카테고리의 다른 글
Vuex 유휴 커밋/버퍼 상태 변경 (0) | 2023.06.07 |
---|---|
모든 iOS(iPhone/iPad/Apple Watch) 장치에 대한 iTunes Connect 스크린샷 크기 (0) | 2023.06.02 |
.NET에서 정수로 목록을 쉽게 채울 수 있는 방법 (0) | 2023.06.02 |
루비의 "not"과 "!"의 차이 (0) | 2023.06.02 |
목록을 Pandas 데이터 프레임 열로 변환 (0) | 2023.06.02 |