字符串与符号

问题描述:

所以我只是在拍戏,并且正在考虑使用键与电脑进行交互,键被球拍解释为字符串。我正在寻找优化我的代码,并想知道字符串或符号是否更快操作。字符串与符号

如果可能的密钥集定义明确,则使用符号。否则,请使用字符串。

字符串和符号之间的主要区别是符号是(默认)interned。对于字符串,可以有多个具有相同内容的字符串,但它们是不同的对象(它们不会与eq?进行比较)。使用符号,具有相同内容的两个符号保证是相同的对象。

这样做的好处是您可以使用eq?进行符号比较,而对于字符串,您必须使用string=?equal?

但是,为了让这种魔法在幕后发生,Scheme实现维护了一个内部池,这基本上就像是一个字符串到符号的哈希表。如果你调用string->symbol并且该字符串还没有存在于内部表中,它会将该字符串(及其相应的符号)添加到该表中,因此,如果可能的键集没有明确定义,则可以将该内部表很快。


编辑:当你说“键”时,你的意思是键盘上的字符?这绝对是一个明确定义的集合,所以你可以使用符号。

+0

对不起,但事实并非如此。如果你采用«键码»是的,但大多数使用意味着考虑用户的键盘映射,你会得到unicode字符。使用小符号集来与程序兼容复杂的人类语言/字母表是一个坏主意。 – webshinra 2016-09-25 10:36:57