Q
與equals
1
A
回答
1
首先,您不希望名稱爲'(bill)
,該名稱是由單個符號'bill
組成的列表。你可能直接想要'bill
。其次,您不能使用=
進行符號比較:=
用於數字比較。 symbol=?
可能是你想要什麼:(注意,還有一些其他的平等函數將在這裏工作過,你可能會看到其他人代替symbol=?
使用eq?
或equal?
這裏)
(if (symbol=? name 'bill) ...)
2
用於測試相等性的過程取決於要比較的操作數的類型。特別是,=
過程用於數字之間比較:
(= 1 1)
但是,這似乎並不如此。如果name
是一個符號:
(symbol=? name 'bill)
如果name
是一個字符串:
(string=? name "bill")
如果name
是單個字符:
(char=? name #\b)
如果名稱是列表:
(member name '(bill))
最後,如果你不知道名字的類型,你可以隨時使用equal?
:
(equal? name "bill")
+1末尖端。你通常不會使用'equal?'去_wrong_。你可能會去_慢(比必要的慢),就是這樣。例如,將兩個符號與'eq?'進行比較會更快一些,但如果使用'equal?',則您的程序將正常工作。 – 2013-03-01 22:59:08