條件表示式

可以使用 ~[~] 完成條件表示式。使用 ~; 分離表示式的子句。

預設情況下,~[ 從引數列表中獲取一個整數,並選擇相應的子句。條款從零開始。

(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!