Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

เชี่ยวชาญตรรกะบูลีนใน Ruby: คู่มือปฏิบัติ

บูลีน (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 ยกเว้นสองค่านี้:

  • false
  • nil

สองค่านี้ และ เฉพาะสองค่านี้ เราเรียกว่า "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 เท่านั้น

อย่าลืมแชร์บทความนี้เพื่อให้คนอื่นหาเจอ 🙂

ขอบคุณที่อ่านครับ