ruby-on-rails - Ruby 中的符号和变量有什​​么区别?

标签 ruby-on-rails ruby variables symbols

<分区>

我想了解 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 应用程序中无法正常工作

c - 驱动函数中的静态全局变量和静态局部变量

ruby-on-rails - Ruby 更新后 Rails 3.1rc4 Assets 管道中断?如何重新激活/配置它?

ruby-on-rails - 如何获取模型中图像变体的 url(在 Controller / View 之外)?主动存储

javascript - 在 for 循环中更改 HTML <select> 表单属性的名称

c# - C# 类库中对象的类、方法、变量大小写/名称的最佳实践是什么?

r - R中的目标变量重新编码

ruby-on-rails - Rails 协会。它们是如何工作的?

ruby-on-rails - 限制每个用户的请求数量(使用机架攻击和设计)