2

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

4

1 回答 1

10

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

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

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

然而,为了让这种魔法发生,在幕后,Scheme 实现维护了一个实习池,基本上就像一个字符串到符号的哈希表。如果您调用string->symbol并且字符串尚未在实习生表中,它会将字符串(及其相应的符号)添加到表中,因此如果您的可能键集未明确定义,您可以将实习生表垃圾迅速地。


编辑:当您说“键”时,您是指键盘字符吗?这绝对是一个定义明确的集合,因此您可以使用符号。

于 2013-02-09T05:45:27.163 回答