Booleans เป็นประเภทข้อมูลตรรกะ เก็บค่าได้เพียง 2 ค่าคือ true และ false อ้างอิงจาก bool class ใน Dart
true แทนตรรกะ จริงfalse แทนตรรกะ เท็จโดยทั่วไปค่า boolean จะได้จากการทดสอบเปรียบเทียบประโยค ค่าตัวแปร หรือจากผลการทำงานของฟังก์ชั่น เพื่อให้ทราบว่าทำสำเร็จหรือไม่
void main() {
String myName = 'John';
bool noName = myName.isEmpty;
print(noName); // output → false
}
หากต้องการใช้ตัวแปรประเภท bool class สามารถประกาศด้วยค่า true หรือ false หรือจะมาจากผลของการทดสอบ เปรียบเทียบของคำสั่งก็ได้
bool hasLife = true;
var isEmpty = false;
var moreThanOne = 2 > 1; // true
ค่า 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);
ใน bool class จะรองรับ Logical operators ทั้งหมด 4 ตัว ได้แก่ ! && || ^
!ตัว ! หรือ NOT เป็น operator ที่ใช้กลับค่าตรรกะของ boolean ให้เป็นค่าตรงกันข้าม
!true ผลที่ได้จะเป็น false!false ผลที่ได้จะเป็น truevoid 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) ใช้สำหรับทดสอบว่าทั้งสองตัวเหมือนกันหรือไม่
truefalsevoid main() {
print(true ^ true); // output → false
print(true ^ false);// output → true
print(false ^ true);// output → true
print(false ^ false);// output → false
}
ตัวนี้เป็น operator ของ bool class ที่ใช้ทดสอบแค่ object 2 ตัวเท่านั้น โดยทำงานจากซ้ายไปขวา ตัวอย่าง true ^ true → false แต่ true ^ true ^ true → true
เพราะทำจากคู่ซ้ายก่อน (true ^ true → false) ^ true
เอามาเทียบกับที่เหลือ (false) ^ true → true