除了数字和文本数据之外,编程还经常需要处理表示真假的信息。用户是否已登录?文件是否已打开?是否发生了错误?这些“是”或“否”的问题对于程序做出决策和控制其行为非常重要。Julia 和其他编程语言一样,有一种专门用于处理这类逻辑值的数据类型:布尔类型。Bool 类型:true 和 false在Julia中,布尔值由 Bool 类型表示。Bool 类型的变量只能存储两个可能值中的一个:true 或 false。它们是Julia中的保留关键字,表示真理的两种基本状态。你可以像处理数字或字符串一样,将这些值分配给变量:julia> is_julia_fun = true true julia> is_data_missing = false false这里,is_julia_fun 是一个存储 true 值的布尔变量,而 is_data_missing 存储 false。这些变量现在包含了一段可用于进行逻辑推断的信息。你可以使用 typeof 函数检查这些值的类型:julia> typeof(true) Bool julia> typeof(is_data_missing) Bool逻辑运算符:处理布尔值如果不能对布尔值进行操作,它们就不会非常有用。Julia 提供了多种逻辑运算符来组合或修改布尔值。三种主要的逻辑运算符是 NOT (!)、AND (&&) 和 OR (||)。逻辑非 (!)NOT 运算符,由感叹号 (!) 表示,它会反转布尔值。如果一个值是 true,!true 就会变成 false。如果一个值是 false,!false 就会变成 true。julia> is_raining = true true julia> is_sunny = !is_raining false julia> println(is_sunny) false julia> println(!false) true下面是 NOT 运算符的简单真值表:输入 A!Atruefalsefalsetrue逻辑与 (&&)AND 运算符,由 && 表示,它组合两个布尔值。A && B 的结果只有当 A 和 B 都为 true 时才为 true。如果 A 或 B(或两者)为 false,结果就是 false。julia> has_ticket = true true julia> is_on_time = true true julia> can_board_flight = has_ticket && is_on_time true julia> has_passport = true true julia> has_visa = false false julia> can_enter_country = has_passport && has_visa falseAND 的真值表是:输入 A输入 BA && Btruetruetruetruefalsefalsefalsetruefalsefalsefalsefalse&& 的短路求值 Julia 中的 && 运算符使用“短路”求值。这表示如果第一个操作数(&& 左侧的)求值为 false,则第二个操作数将根本不会被求值,因为无论如何总结果都必须是 false。这对于提高性能和避免错误很有用,例如当第一个条件不满足时,第二个表达式可能会导致问题(如除以零)。逻辑或 (||)OR 运算符,由 || 表示,也组合两个布尔值。如果 A 或 B 中至少有一个为 true,则 A || B 的结果为 true。结果仅当 A 和 B 都为 false 时才为 false。julia> has_coffee = true true julia> has_tea = false false julia> can_have_hot_drink = has_coffee || has_tea true julia> is_weekend = false false julia> is_holiday = false false julia> can_skip_work = is_weekend || is_holiday falseOR 的真值表是:| 输入 A | 输入 B | A || B | | :------ | :------ | :------- | | true | true | true | | true | false | true | | false | true | true | | false | false | false ||| 的短路求值 与 && 类似,|| 运算符也使用短路求值。如果第一个操作数(|| 左侧的)求值为 true,则第二个操作数不会被求值,因为总结果必须是 true。比较产生的布尔值通常,布尔值不是直接赋值的,而是比较操作的结果。你已经见过数字;你可以比较它们来产生布尔结果。像 ==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于或等于)和 <=(小于或等于)这样的运算符都会产生布尔结果。julia> age = 20 20 julia> is_adult = age >= 18 true julia> temperature = 25.5 25.5 julia> is_comfortable = temperature > 20.0 && temperature < 30.0 true julia> a = 5 5 julia> b = 10 10 julia> a_equals_b = (a == b) false julia> a_not_equals_b = (a != b) true在 is_comfortable 示例中,我们使用 && 运算符组合了两个比较结果(temperature > 20.0 和 temperature < 30.0)。变量 is_comfortable 仅在两个条件都满足时才变为 true。布尔逻辑在程序中的作用理解布尔逻辑非常重要,因为它构成了程序中决策的基础。求值为 true 或 false 的表达式用于控制程序的执行流程。例如,你可能只想在某个条件为 true 时运行一段代码,或者在一个条件保持 true 时重复一项任务。我们将在下一章详细介绍这些控制流结构,例如 if 语句和 while 循环。现在,请记住布尔值(true 和 false)和逻辑运算符(!, &&, ||)是 Julia 提供的用于表示和操作逻辑条件的工具,它们是程序智能行为的依据。熟练掌握它们是你编程道路上的重要一步。