Dart: Booleans เบื้องต้น

Booleans เป็นประเภทข้อมูลตรรกะ เก็บค่าได้เพียง 2 ค่าคือ true และ false อ้างอิงจาก bool class ใน Dart

  • true แทนตรรกะ จริง
  • false แทนตรรกะ เท็จ

โดยทั่วไปค่า boolean จะได้จากการทดสอบเปรียบเทียบประโยค ค่าตัวแปร หรือจากผลการทำงานของฟังก์ชั่น เพื่อให้ทราบว่าทำสำเร็จหรือไม่

void main() {
  String myName = 'John';
  bool noName = myName.isEmpty;
  print(noName); // output → false
}

การประกาศตัวแปร bool

หากต้องการใช้ตัวแปรประเภท bool class สามารถประกาศด้วยค่า true หรือ false หรือจะมาจากผลของการทดสอบ เปรียบเทียบของคำสั่งก็ได้

  bool hasLife = true;
  var isEmpty = false;
  var moreThanOne = 2 > 1; // true

การใช้งาน bool ในการประโยคคำสั่งทดสอบเงื่อนไข

ค่า bool มักนำไปใช้ทดสอบในคำสั่งต่าง ๆ เช่น if while do while

  var num1 = 0;
  if (2 > num1) {
    //do when num1 less than 2
  } else {
    //do when num1 equal or more than 2
  }

  while (true) {
    // endless loop
  }

  do {
    // one time loop
  } while (false);

Logical operators ตัวดำเนินการเชิงตรรกะ

ใน bool class จะรองรับ Logical operators ทั้งหมด 4 ตัว ได้แก่ ! && || ^

นิเสธค่าตรระกะด้วย !

ตัว ! หรือ NOT เป็น operator ที่ใช้กลับค่าตรรกะของ boolean ให้เป็นค่าตรงกันข้าม

  • !true ผลที่ได้จะเป็น false
  • !false ผลที่ได้จะเป็น true
void main() {
  var num2 = 2;
  print(num2.isEven); // output → true
  print(!num2.isEven); // output → false
}

ต้องการ true ทุกตัวไม่งั้น false ด้วย &&

&& หรือ logical AND จะใช้สำหรับทดสอบว่าถ้าเป็น true ทั้งหมด ผลที่ได้จะเป็น true นอกนั้น false

  print(true && true); // output → true
  print(true && false); // output → false
  print(false && false); // output → false  
  print(true && true && false); // output → false

ต้องการ true อย่างน้อย 1 ตัว จะได้เป็น true ด้วย ||

|| หรือ logical OR จะใช้สำหรับทดสอบว่าถ้าเป็น true อย่างน้อย 1 ตัว ผลที่ได้จะเป็น true

  print(true || true); // output → true
  print(true || false); // output → true
  print(false || false); // output → false  
  print(true || true || false); // output → true

ทดสอบว่าทั้งสองตัวเหมือนกันหรือไม่ ถ้าไม่เหมือนกันจะเป็น true ด้วย ^

^ หรือ XOR (exclusive OR) ใช้สำหรับทดสอบว่าทั้งสองตัวเหมือนกันหรือไม่

  • ถ้าไม่เหมือนกัน จะได้ true
  • ถ้าเหมือนกัน จะได้ false
void main() {
  print(true ^ true); // output → false
  print(true ^ false);// output → true
  print(false ^ true);// output → true
  print(false ^ false);// output → false
}
Dsmurat, penubag, Jelican9, CC BY-SA 4.0

ตัวนี้เป็น operator ของ bool class ที่ใช้ทดสอบแค่ object 2 ตัวเท่านั้น โดยทำงานจากซ้ายไปขวา ตัวอย่าง
true ^ true → false แต่ true ^ true ^ true → true
เพราะทำจากคู่ซ้ายก่อน (true ^ true → false) ^ true
เอามาเทียบกับที่เหลือ (false) ^ true → true