บูลีน (Boolean) คืออะไร?
บูลีนคือค่าที่ใช้ในข้อความตรรกะ เพื่อบอกว่าสิ่งใดสิ่งหนึ่งถือว่าเป็นจริง (true) หรือเท็จ (false)
สิ่งนี้สามารถ ใช้ตัดสินใจ ได้
ใน Ruby เราไม่มีคลาส Boolean แตเรามีออบเจ็กต์บูลีน!
เรามี true และ false
ซึ่งเป็น singleton objects ของ TrueClass และ FalseClass
คุณได้ค่าบูลีนเมื่อใช้เมธอดเช่น:
empty?all?match?
และเปรียบเทียบสิ่งต่างๆ ด้วยเครื่องหมายเท่ากับ:
1 == 1 # true
จำไว้ว่า == ใน Ruby ก็เป็นเมธอดเช่นกัน หมายความว่าพฤติกรรมอาจเปลี่ยนไปขึ้นอยู่กับวิธีที่เมธอดนี้ถูก implement
ค่า Truthy และ Falsy
ค่า Truthy คืออะไร?
คือค่าที่ถือว่าเป็น true ในบริบทของบูลีน เช่น คำสั่ง if
ทุกอย่างใน Ruby เป็น truthy ยกเว้นสองค่านี้:
falsenil
สองค่านี้ และ เฉพาะสองค่านี้ เราเรียกว่า "falsy"
บูลีนในทางปฏิบัติ
นี่หมายความว่า หากคุณมีเงื่อนไข...
แบบนี้:
if bacon puts "we got bacon" end
Ruby ตรวจสอบว่า bacon เป็น truthy (อะไรก็ตามที่ไม่ใช่ false / nil) ก่อนพิมพ์สตริง
กล่าวอีกนัยหนึ่ง:
คุณไม่ต้องตรวจสอบ nil หากคุณไม่ได้เรียกเมธอดบน bacon
Safe Navigator (ตัวนำทางปลอดภัย)
บางครั้งคุณต้องการเรียกเมธอดบนออบเจ็กต์
แบบนี้:
if bacon.stock # ... end
นี่จะให้ข้อผิดพลาดถ้า bacon เป็น nil เพื่อหลีกเลี่ยงคุณสามารถทำดังนี้...
ตัวอย่าง:
if bacon&.stock # ... end
&. นี้เรียกว่า safe navigation operator และถูกนำเข้าใน Ruby 2.3
เมธอดบูลีน (Boolean Methods)
เคยเห็นเมธอดที่ลงท้ายด้วยเครื่องหมายคำถามไหม?
เช่น empty?
เราเรียกพวกมันว่า "predicate methods" และตามข้อตกลง พวกมันคืนค่า true หรือ false เสมอ
คุณสามารถเขียนเองได้:
def published? # ... end def ready? # ... end
นี่เป็นรูปแบบที่ดี จะทำให้โค้ดของคุณรู้สึกكثر Ruby
พารามิเตอร์บูลีน ไม่ใช่ไอเดียดี
เราเพิ่งครอบคลุมเมธอดบูลีน ซึ่งดี แตสิ่งที่คุณอยากหลีกเลี่ยงคือ พารามิเตอร์บูลีน
ตัวอย่าง:
def bacon(raw) end bacon(false)
เมื่อคุณดู bacon(false) คุณไม่มีไอเดียว่า false นี้หมายถึงอะไร
คุณต้องขุดโค้ดเพื่อหาคำตอบ
นอกจากนี้ ค่าบูลีนหมายความว่าเมธอดของคุณจะ ซับซ้อนกว่าที่จำเป็น
วิธีแก้?
แยกเมธอดเป็นสอง หรือออกแบบโค้ดให้ไม่จำเป็นต้องมีสิ่งนี้
ตรรกะบูลีน (Boolean Logic)
TrueClass และ FalseClass implement เมธอดบางอย่าง
เช่น to_s, และ inspect
แต่น่าสนใจกว่านั้นคือ:
&|^
เมธอดที่ดูแปลกตาเหล่านี้คืออะไร?
ตรรกะบูลีน
นี่คือตารางตรรกะบูลีน:
| ชื่อ | สัญลักษณ์ | TRUE / TRUE | TRUE / FALSE |
|---|---|---|---|
| AND | & | true | false |
| OR | | | true | true |
| XOR | ^ | false | true |
ตัวอย่าง:
true & true
แม้เราจะไม่ค่อยใช้ตรรกะบูลีนในโค้ดของเรา มันก็เป็นรากฐานของการทำงานของคอมพิวเตอร์ จึงน่าสนใจที่จะรู้จัก
สรุป
คุณได้เรียนรู้เกี่ยวกับค่าบูลีนใน Ruby! จำไว้ว่าทุกอย่างเป็น "truthy" ยกเว้น false และ nil เท่านั้น
อย่าลืมแชร์บทความนี้เพื่อให้คนอื่นหาเจอ 🙂
ขอบคุณที่อ่านครับ