lisp 裡的相等(相同)的比較
common-lisp 裡關於相等、相同的比較運算子太多了,怎麼用呢?
eq eql qual equalp = string-equal char-equal
怎麼用呢? 一個大原則: 符號系統(symbol) 的比較用eq ,其他情況下可以用equal
下面看看 :
eq 只用來比較符號系統(symbol) 或者cons 但是隻能跟自己比較。
CL-USER> (member 2 '(3 4 2 5 6))
(2 5 6)
CL-USER> (eq 'abc 'abc )
T
CL-USER> (eq 'abc "abc")
NIL
CL-USER> (eq 1 1)
T
CL-USER> (eq "abc" "abc")
NIL
CL-USER>
CL-USER> (eq '(1 2 3) '(1 2 3))
NIL
我們常規意義上的equal 都可以比對相等了,但是不用型別的是不能比較,例如 (equal 1 1.0)
CL-USER> (equal 'apple 'apple)
T
CL-USER> (equal "abc" "abc")
T
CL-USER> (equal 'abc "abc")
NIL
CL-USER> (equal 1 1)
T
CL-USER> (equal 1 1.0)
NIL
CL-USER> (equal '(1 2 3) '(1 2 3))
T
CL-USER> (equal (list 1 2 3) (cons 1 (cons 2 3)))
NIL
CL-USER> (equal (list 1 2 3) (cons 1 (cons 2(cons 3 nil))))
T
CL-USER> (equal #\a #\a)
T
CL-USER> (equal 2.3 2.3)
T
CL-USER>
我們常規意義上的equal 都可以比對相等了,但是不用型別的是不能比較,例如 (equal 1 1.0)
eql 可以比較 數字, 符號系統(symbol) 還有字元
CL-USER> (eql 1 1)
T
CL-USER> (eql 1.0 1)
NIL
CL-USER> (eql #\a #\a)
T
CL-USER> (eql 'abc 'abc)
T
CL-USER>
eql 也不能誇資料型別比較
equalp 可以比較很多我們看上去相等的資料,例如 1 = 1.0 “abc” = “ABC"
CL-USER> (equalp 1 1.0)
T
CL-USER> (equalp "abc" "ABC")
T
CL-USER> (equalp 'abc 'abc)
T
CL-USER> (equalp '(1 2 3) (list 1 2 3))
T
CL-USER> (equalp '(1 2 3) (cons 1(cons 2(cons 3 nil))))
T
CL-USER> (equalp 1 "1")
NIL
CL-USER> (equalp 1 #\1)
NIL
但是equalp 是不能誇" 大” 的資料型別的比如 數字1 與字串 ”1“
字串的比較 就 可以考慮專用的STRING-EQUAL
字元的比較 可以考慮專用的 char-equal
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-751628/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 比較日期相等Oracle
- JavaScript 比較相同的字元返回falseJavaScript字元False
- 一個比較float是否相等的工具類
- 比較兩個陣列是否相等陣列
- 【Java】浮點數相等性比較Java
- shell比較兩個字串是否相等字串
- 比較檔案是否相同,(比較MD5值)
- 比較兩個table是否相同
- 輸入兩個長度相同的字串,比較兩個數在相同位置的字元是否相同字串字元
- python如何比較兩個字串是否相等Python字串
- matlab比較兩個矩陣是否相等Matlab矩陣
- Js 比較兩個物件的鍵名與鍵值是否相等JS物件
- 比較兩個陣列中是否有相同的元素陣列
- 比較兩個mysql資料庫裡面的表是否相同的一個校驗指令碼MySql資料庫指令碼
- C# 實現一個基於值相等性比較的字典C#
- lisp 裡的條件判斷Lisp
- lisp 裡的迴圈loop macroLispOOPMac
- python3中怎麼比較字串是否相等Python字串
- PLSQL Language Referenc-PL/SQL集合和記錄-集合比較-比較巢狀表是否相等SQL巢狀
- lisp 裡的 ,@ 反引號 的解釋Lisp
- 比較兩個物件是否相同,輸出不同的屬性值(一)物件
- oracle pl/sql 迴圈比較集合元素是否相同OracleSQL
- 自定義模型相等比較模型
- .NET CORE下最快比較兩個檔案內容是否相同的方法
- ABAP OPEN SQL裡OPEN CURSOR和SELECT的比較SQL
- 使用PowerShell比較本地文字檔案與Web上的文字檔案是否相同Web
- oracle cursor遊標迴圈比較遊標元素是否相同Oracle
- 這 10 行比較字串相等的程式碼給我整懵逼了,不信你也來看看字串
- Python解惑:整數比較 is ==的比較Python
- Integer的比較
- Same Tree 比較兩個二叉樹是否完全相同二叉樹
- 【原創】自己構思2條SQL用於完成相同的功能,並比較它們的效能!SQL
- 判斷陣列裡面的json 物件是否相等,相等則移除陣列JSON物件
- PHP物件的比較PHP物件
- SAP CRM和Cloud for Customer裡的Formatted Text控制元件的比較CloudORM控制元件
- 這 10 行比較字串相等的程式碼給我整懵逼了,不信你也來看看|原創版字串
- Go和Python比較的話,哪個比較好?GoPython
- 學網路安全哪裡培訓比較好?