字符串与符号

Dav*_*vid 0 scheme racket

所以我只是在球拍中,正在考虑使用键与计算机进行交互,并且通过球拍将键解释为字符串.我正在寻找我的代码的优化,并想知道字符串或符号是否更快操作.

Chr*_*ung 7

如果明确定义了可能的键集,请使用符号.否则,请使用字符串.

字符串和符号之间的主要区别在于符号(默认情况下)是实际的.对于字符串,您可以拥有多个具有相同内容的字符串,但它们是不同的对象(它们不作为比较eq?).对于符号,具有相同内容的两个符号保证是相同的对象.

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

然而,为了在幕后发生这种魔术,Scheme实现维护一个实习池,它基本上就像一个字符串到符号的哈希表.如果你调用string->symbol并且字符串不在实习表中,它会将字符串(及其相应的符号)添加到表中,所以如果你的可能键的集合没有明确定义,你可以把实习生表格搞得很漂亮很快.


编辑:当你说"键"时,你的意思是键盘字符?这绝对是一个定义明确的集合,因此您可以使用符号.