什麼是"正確"及"不正確"?
在寫壓力容器計算的程式時,有一段法規上說。在判斷最小厚度時,有以下.....。 其中在非致死性作業下,... 熱交換器的換熱管 (tube) 可不受最小厚度 1.5 mm的限制的規定。 怎麼在程式中表示"非"致死性呢?我直覺就想到。如果一個承壓件在其屬性中表示,它是非致死性作業。 (let ((hash1 (make-hash-table))) (setf (gethash 'is-lethal-service hash1) nil) hash1) 其中要如何判斷它是否為真,或是"正確"一般的作法是 (let ((hash1 (make-hash-table))) . . . (if (equal (gethash 'is-lethal-service hash1) t) (print t) (print nil))) 但是 (gethash 'is-lethal-service hash1) 取回的值為多值。所以它傳回 T T 二個數值,第一個是屬產的值 'T ,第二個值為表示 'is-lethal-service 在 hash1 這個雜湊表中有此鍵值。那如果在 hash1 的雜湊表中沒有這個鍵值,即沒 'is-lethal-service 這個 key ;它回傳值就變成 nil nil 了。所以在使用雜湊表儲存屬性值時,要先確認它在雜湊表中是否有鍵值,再來判別其屬性值為何。 一般 common lisp 程式除了 nil 之外都是真值。而使用雜湊儲存資料時會造成以上的困擾。所以在使用上我設定了判斷壓力容器參數真值的判斷程式。 ;; 以下為確認"正" (defun true-p (obj) (if (or (equal obj t) (equal obj "t") (equal obj "T") (equal obj "TRUE") (equal obj "true") (equal obj &