หนุ่มรู้กฎ แต่เก่ารู้ข้อยกเว้น;)
ในล่าสุด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)บันทึกชื่อตัวแปร