Ruby中var = 55和:var = 55之间有什么区别?

Cu1*_*ure -1 ruby string variables symbols

我刚刚在Ruby中看过这个视频离子符号.在视频中,似乎说分配变量会创建一个相同名称的符号,并将其指向分配中的相应对象.

我理解字符串和符号之间的区别,因为每次字符串始终引用相同的对象时,字符串会创建唯一的对象.但是,我正在努力理解变量和同名符号之间的区别.

例如,如何:

var = 55

不同于:

:var = 55

Ste*_*zyn 8

在Ruby中,您可以将数据存储在Hash对象中... Hash对象是键值对的集合

star_info = {:name = > "Johnny Depp", :birth_year => 1963, :birth_country = "USA" }
Run Code Online (Sandbox Code Playgroud)

哈希star_info有关于电影明星的信息.它存储为键(我使用符号,但我没有必要;这是常见且有效的)和值(与相关键的特定电影明星相关的值).

为了获得电影明星的名字我能做到......

p star_info[:name]
=> "Johnny Depp"
Run Code Online (Sandbox Code Playgroud)

因此,尽管符号实际上并不将数据本身"存储"为变量,但它可以用作指向存储在某个Hash对象中的数据的指针.

要成功检索与符号相关的数据,您必须同时包含符号(键)和Hash对象(存储键/值对的对象).

编辑

刚刚回顾了你引用的视频,它就是一个很好的视频......你可能会发现令人困惑的是他将变量称为"内部符号",并且根据它建立概念模型没有帮助.符号是表示......符号:west表示概念:west,不指向任何其他对象.