1
所以我只是在拍戲,並且正在考慮使用鍵與電腦進行交互,鍵被球拍解釋爲字符串。我正在尋找優化我的代碼,並想知道字符串或符號是否更快操作。字符串與符號
所以我只是在拍戲,並且正在考慮使用鍵與電腦進行交互,鍵被球拍解釋爲字符串。我正在尋找優化我的代碼,並想知道字符串或符號是否更快操作。字符串與符號
如果可能的密鑰集定義明確,則使用符號。否則,請使用字符串。
字符串和符號之間的主要區別是符號是(默認)interned。對於字符串,可以有多個具有相同內容的字符串,但它們是不同的對象(它們不會與eq?
進行比較)。使用符號,具有相同內容的兩個符號保證是相同的對象。
這樣做的好處是您可以使用eq?
進行符號比較,而對於字符串,您必須使用string=?
或equal?
。
但是,爲了讓這種魔法在幕後發生,Scheme實現維護了一個內部池,這基本上就像是一個字符串到符號的哈希表。如果你調用string->symbol
並且該字符串還沒有存在於內部表中,它會將該字符串(及其相應的符號)添加到該表中,因此,如果可能的鍵集沒有明確定義,則可以將該內部表很快。
編輯:當你說「鍵」時,你的意思是鍵盤上的字符?這絕對是一個明確定義的集合,所以你可以使用符號。
對不起,但事實並非如此。如果你採用«鍵碼»是的,但大多數使用意味着考慮用戶的鍵盤映射,你會得到unicode字符。使用小符號集來與程序兼容複雜的人類語言/字母表是一個壞主意。 – webshinra 2016-09-25 10:36:57