หนุ่มรู้กฎ แต่เก่ารู้ข้อยกเว้น;)
ในล่าสุดC#
หากคุณกำลังจัดการกับ a null-able bool
แล้วคุณจะต้อง:
bool? x = null;
bool? y = true;
bool? z = false;
if (x == true || y == true || z == true) {
// That was the only way that is reasonably readable that I know of
// to accomplish this expression.
}
หาก tristate ไม่ได้เป็นปัญหาแล้วมักจะมีไม่ควรมีเหตุผลที่จะเปรียบเทียบบางสิ่งบางอย่างไป/true
True
อย่างไรก็ตามในPython
และอีกหลายภาษาเช่นC/C++
คุณสามารถดำเนินการif
ในการแสดงออกที่ไม่ใช่บูล ภาษาเหล่านี้มีกฎเฉพาะสำหรับการตีความจำนวนเต็มพอยน์เตอร์รายการ ฯลฯ ว่าเป็นจริงหรือเท็จ บางครั้งคุณไม่ต้องการที่ ตัวอย่างเช่นใน Python ตัวอย่างนี้:
x = True
y = 'abcdef'
z1 = x and y
z2 = (x == True) and (y == True)
นี่z
ควรจะเป็นTrue
แต่ควรจะเป็นz2
False
ทีนี้Clojure
ภาษาเข้าใกล้สิ่งนี้ในอีกทางหนึ่ง - and
ฟังก์ชั่นไม่จำเป็นต้องประเมินถึง a bool
แต่if
สามารถจัดการได้
ไม่ว่าจะใช้ภาษาใดเมื่อใดก็ตามที่คุณพบว่าตัวเองเปรียบเทียบอะไรกับมันTrue
หรือFalse
มันอาจจะคุ้มค่าที่จะแสดงความคิดเห็น
if (some_flag == true)
แต่โดยนัยหรือif (is_something)
if (has_something)
บันทึกชื่อตัวแปร