2
ทำไมอ็อบเจกต์ Regexp ถือว่าเป็น "เท็จ" ในรูบี?
ทับทิมมีความคิดที่เป็นสากลของ " truthiness " และ " falsiness " ทับทิมไม่ได้มีสองชั้นที่เฉพาะเจาะจงสำหรับวัตถุบูลีนTrueClassและFalseClassมีอินสแตนซ์เดี่ยวแสดงโดยตัวแปรพิเศษtrueและfalseตามลำดับ อย่างไรก็ตามtruthinessและfalsinessไม่ จำกัด เฉพาะกรณีของทั้งสองเรียนที่เป็นแนวคิดที่เป็นสากลและนำไปใช้กับทุกวัตถุเดียวในรูบี วัตถุทุกคนเป็นอย่างใดอย่างหนึ่งtruthyหรือfalsy กฎนั้นง่ายมาก โดยเฉพาะวัตถุสองอย่างเท่านั้นที่เป็นเท็จ : nilอินสแตนซ์ของNilClassและ falseอินสแตนซ์เดี่ยวของ FalseClass ทุกวัตถุอื่น ๆ เดียวคือtruthy ซึ่งรวมถึงวัตถุที่ถือว่าเป็นเท็จในภาษาการเขียนโปรแกรมอื่นเช่น ,Integer 0 ,Float 0.0 ที่ว่างเปล่า,String '' ที่ว่างเปล่า,Array [] ที่ว่างเปล่า,Hash {} กฎเหล่านี้สร้างขึ้นในภาษาและไม่สามารถระบุได้โดยผู้ใช้ ไม่มีto_boolการแปลงโดยนัยหรืออะไรที่คล้ายกัน นี่คือใบเสนอราคาจากข้อกำหนดภาษา ISO Ruby : 6.6 ค่าบูลีน วัตถุถูกแบ่งออกเป็นทั้งวัตถุ trueishหรือวัตถุ falseish เท็จเท่านั้นและไม่มีวัตถุปลอม falseเป็นอินสแตนซ์เดียวของคลาสFalseClass(ดู 15.2.6) ซึ่งfalse-expressionประเมินค่า (ดู 11.5.4.8.3) …