当前位置:  开发笔记 > 后端 > 正文

在Ruby中,如何选择在给定场景中使用的符号或字符串?

如何解决《在Ruby中,如何选择在给定场景中使用的符号或字符串?》经验,为你挑选了1个好方法。

我在各种网站上看到了这个答案:

如果对象的内容(字符序列)很重要,请使用字符串如果对象的标识很重要,请使用符号

但是,这究竟意味着什么?请给我一个解释,即使是外行也能理解.



1> Sergio Tulen..:
a = :foo
b = :foo

ab在内存中引用相同的对象(相同的标识)

a.object_id # => 898908
b.object_id # => 898908

字符串表现不同

a = 'foo'
b = 'foo'

a.object_id # => 70127643805220
b.object_id # => 70127643805200

因此,您使用字符串来存储数据并对数据执行操作(替换字符或诸如此类),并使用符号来命名事物(哈希中的键或其他内容).有关符号的更多用例,请参阅此答案.


当您处理用户提供的数据(如任意JSON密钥或参数名称)时,*不*使用符号也很重要.在旧版本的Ruby中,这些从未被垃圾收集并呈现出拒绝服务攻击面.使用符号表示您控制的频繁重复的事情是一个好主意.它们的比较速度也更快.
推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有