Ruby中以冒号为前缀的单词有什么用?

Orc*_*ris 0 ruby ruby-on-rails colon

可能重复:
了解Ruby中的符号Ruby
中的冒号运算符是什么?

这是我正在阅读的Rails教程给出的一些代码.

class Post < ActiveRecord::Base
  attr_accessible :content, :name, :title

  validates :name,  :presence => true
  validates :title, :presence => true,
                    :length => { :minimum => 5 }
end
Run Code Online (Sandbox Code Playgroud)

什么:content,:name和:title是什么意思?我依旧记得这些来自我正在阅读的红宝石教程(hlrb),但是当我浏览它时我找不到它们.这些单词以冒号为前缀是什么意思?

DVG*_*DVG 8

你所指的词叫做符号.

你问的符号是什么?它们或多或少像字符串一样,除了它们是不可变的(不能改变)并且是单例(只在内存中创建一次,无论你使用它们多少次).

这意味着它们在任何地方都被用作键,因为它们的内存效率更高.

因此,如果您有两个哈希值,并且有一个名为key的键,则使用字符串作为哈希键:

my_hash['key'] #in memory once
your_hash['key'] # in memory twice
Run Code Online (Sandbox Code Playgroud)

如果您使用符号

my_hash[:key] # in memory once
your_hash[:key] # still in memory once!
Run Code Online (Sandbox Code Playgroud)

您可能还会遇到以下形式的符号:

key: 'value'
Run Code Online (Sandbox Code Playgroud)

这是一样的

:key => 'value'
Run Code Online (Sandbox Code Playgroud)