<分区>
我想了解 ruby 中符号和变量之间的区别。他们在给出一个引用对象的名称时似乎做了完全相同的事情。
我已经阅读过这些符号以加快程序速度,但我不确定它们与变量有任何不同的原因或方式。
<分区>
我想了解 ruby 中符号和变量之间的区别。他们在给出一个引用对象的名称时似乎做了完全相同的事情。
我已经阅读过这些符号以加快程序速度,但我不确定它们与变量有任何不同的原因或方式。
最佳答案
符号是一个“内部化”的字符串,它更像是一个常量而不是任何东西。典型例子:
account_details = {
:name => 'Bob',
:age => 20
}
这里的符号 :name
和 :age
是散列的键。不要将它们与变量混淆。 account_details
是一个变量。
Ruby 中的变量是某种对象的句柄,而该对象可能是一个符号。
通常,当使用字符串会导致大量重复时,您会使用符号。请记住,字符串通常是不同的对象,其中不同的符号总是指代同一个对象,如果经常使用它们会更有效率。
比较:
"string".object_id == "string".object_id
# => false
:string.object_id == :string.object_id
# => true
尽管这两个字符串相同,但它们是独立的字符串对象。当用作散列的键、方法的参数和其他常见情况时,这些对象将很快使您的内存因大量重复而变得杂乱无章,除非您不厌其烦地使用相同的字符串实例。符号会自动为您执行此操作。
关于ruby-on-rails - Ruby 中的符号和变量有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24943106/
相关文章:
ruby-on-rails - 从 Rails 3 迁移到 Rails 4 导致自动 ActiveRecord 缓存丢失
html - CSS 在我的 RoR 应用程序中无法正常工作
ruby-on-rails - Ruby 更新后 Rails 3.1rc4 Assets 管道中断?如何重新激活/配置它?
ruby-on-rails - 如何获取模型中图像变体的 url(在 Controller / View 之外)?主动存储
javascript - 在 for 循环中更改 HTML <select> 表单属性的名称
c# - C# 类库中对象的类、方法、变量大小写/名称的最佳实践是什么?