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

时间:2012-06-22 19:44:35

标签: ruby-on-rails ruby colon

  

可能重复:
  Understanding Symbols In Ruby
  What is the colon operator in Ruby?

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

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

  validates :name,  :presence => true
  validates :title, :presence => true,
                    :length => { :minimum => 5 }
end

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

1 个答案:

答案 0 :(得分:8)

您所指的词语称为符号。

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

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

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

my_hash['key'] #in memory once
your_hash['key'] # in memory twice

如果您使用符号

my_hash[:key] # in memory once
your_hash[:key] # still in memory once!

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

key: 'value'

这与

相同
:key => 'value'