2013-02-09 63 views
1

所以我只是在拍戲,並且正在考慮使用鍵與電腦進行交互,鍵被球拍解釋爲字符串。我正在尋找優化我的代碼,並想知道字符串或符號是否更快操作。字符串與符號

回答

7

如果可能的密鑰集定義明確,則使用符號。否則,請使用字符串。

字符串和符號之間的主要區別是符號是(默認)interned。對於字符串,可以有多個具有相同內容的字符串,但它們是不同的對象(它們不會與eq?進行比較)。使用符號,具有相同內容的兩個符號保證是相同的對象。

這樣做的好處是您可以使用eq?進行符號比較,而對於字符串,您必須使用string=?equal?

但是,爲了讓這種魔法在幕後發生,Scheme實現維護了一個內部池,這基本上就像是一個字符串到符號的哈希表。如果你調用string->symbol並且該字符串還沒有存在於內部表中,它會將該字符串(及其相應的符號)添加到該表中,因此,如果可能的鍵集沒有明確定義,則可以將該內部表很快。


編輯:當你說「鍵」時,你的意思是鍵盤上的字符?這絕對是一個明確定義的集合,所以你可以使用符號。

+0

對不起,但事實並非如此。如果你採用«鍵碼»是的,但大多數使用意味着考慮用戶的鍵盤映射,你會得到unicode字符。使用小符號集來與程序兼容複雜的人類語言/字母表是一個壞主意。 – webshinra 2016-09-25 10:36:57