ฉันพบตัวเองซ้ำ ๆ มองหาคำนิยามที่ชัดเจนของความแตกต่างของnil?
, blank?
และempty?
ใน Ruby on Rails นี่คือสิ่งที่ฉันมาใกล้ที่สุด:
blank?
วัตถุเป็นเท็จว่างหรือสตริงช่องว่าง ตัวอย่างเช่น""
," "
,nil
,[]
และ{}
มีความว่างเปล่าnil?
วัตถุเป็นอินสแตนซ์ของ NilClassempty?
วัตถุเป็นคลาสเฉพาะและข้อกำหนดแตกต่างกันไปในแต่ละคลาส สตริงว่างเปล่าหากไม่มีตัวอักษรและอาร์เรย์จะว่างเปล่าหากไม่มีรายการ
มีอะไรที่ขาดหายไปหรือการเปรียบเทียบที่เข้มงวดกว่านี้สามารถทำได้หรือไม่?
:nil?
มีการกำหนดใน::Kernel
และแทนที่ใน::NilClass
ขณะที่:empty?
มีการใช้งานแยกกันในชั้นเรียนจำนวนมาก (natively บน::String
, ::Array
, ::Hash
และไม่ใช่กำเนิดในชั้นเรียนอื่น ๆ เช่น::Set
จาก STDLIB และ::ActiveRecord::Relation
จากราง) ดังนั้น:nil?
มีอยู่ในคลาสย่อยทั้งหมด::Object
และในทุกคลาสที่รวมอยู่::Kernel
ด้วยซึ่ง:empty?
จะต้องนำไปใช้หรือรวมไว้ในคลาสของคุณโดยเฉพาะ
[1] pry(main)> [].blank? => true
present?
เป็นที่ว่างเปล่าเท็จผลตอบแทนอาร์เรย์ ซึ่งเป็นเพราะblank?
ผลตอบแทนจริงสำหรับอาร์เรย์ที่ว่างเปล่า