条件表达式
可以使用 ~[
和 ~]
完成条件表达式。使用 ~;
分离表达式的子句。
默认情况下,~[
从参数列表中获取一个整数,并选择相应的子句。条款从零开始。
(format t "~@{~[First clause~;Second clause~;Third clause~;Fourth clause~]~%~}"
0 1 2 3)
; First clause
; Second clause
; Third clause
; Fourth clause
最后一个子句可以用~:;
分隔,而不是使其成为 else 子句。
(format t "~@{~[First clause~;Second clause~;Third clause~:;Too high!~]~%~}"
0 1 2 3 4 5)
; First clause
; Second clause
; Third clause
; Too high!
; Too high!
; Too high!
如果条件表达式以~:[
开头,则它将期望一个通用的布尔值而不是整数。它只能有两个条款; 如果布尔值是 NIL
则打印第一个,如果是真值则打印第二个子句。
(format t "~@{~:[False!~;True!~]~%~}"
t nil 10 "Foo" '())
; True!
; False!
; True!
; True!
; False!
如果条件表达式以~@[
开头,那么应该只有一个子句,如果输入(广义布尔值)是真实的,则打印该子句。如果它是真实的,则不会消耗布尔值。
(format t "~@{~@[~s is truthy!~%~]~}"
t nil 10 "Foo" '())
; T is truthy!
; 10 is truthy!
; "Foo" is truthy!