Gleam 用Bool类型表示 true 和 false 值。只有两个值:True和False。这些值可以绑定到变量:
let true_variable = True
let false_variable = False
&&、||和!运算符可用于操作布尔值:
True && True // -> True
True && False // -> False
False || True // -> True
False || False // -> False
!False // -> True
!True // -> False
&&和||运算符采用短路求值,也就是说,只有当需要时,才会对运算符右侧的表达式求值。
每个运算符的优先级都不同,其中!会先于&&和||求值。可以使用大括号让表达式的某一部分先于其他部分求值:
!True && False // -> False
!{True && False} // -> True
在这个练习中,你需要把经典游戏 Pac-Man 中的一些规则翻译成 Gleam 函数。
你有 4 条规则要翻译,它们都与游戏状态有关。
不用担心实参是怎么来的,只需专注于把实参组合起来,返回预期的结果。
定义 eat_ghost 函数,它接收 2 个实参(吃豆人是否有能量丸处于生效状态_和_吃豆人是否碰到幽灵),并返回一个布尔值,表示吃豆人是否能吃掉幽灵。只有当吃豆人能量丸处于生效状态且碰到幽灵时,函数才应返回 True。
eat_ghost(False, True)
// -> False
定义 score 函数,它接收 2 个实参(吃豆人是否碰到能量丸_和_吃豆人是否碰到豆子),并返回一个布尔值,表示吃豆人是否得分。只要吃豆人碰到能量丸或豆子,函数就应返回 True。
score(True, True)
// -> True
定义 lose 函数,它接收 2 个实参(吃豆人是否有能量丸处于生效状态_和_吃豆人是否碰到幽灵),并返回一个布尔值,表示吃豆人是否失败。如果吃豆人碰到幽灵,并且没有能量丸处于生效状态,函数应返回 True。
lose(False, True)
// -> True
定义 win 函数,它接收 3 个实参(吃豆人是否吃掉了所有的豆子、吃豆人是否有能量丸处于生效状态_和_吃豆人是否碰到幽灵),并返回一个布尔值,表示吃豆人是否获胜。如果吃豆人吃掉了所有的豆子,并且根据第 3 部分中定义的实参判断没有失败,函数应返回 True。
win(False, True, False)
// -> False