0

可能的重复:
理解 Ruby 中的符号 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 是什么意思?我依稀记得我正在阅读的 ruby​​ 教程(hlrb)中的这些,但是当我浏览它时找不到它们。这些以冒号为前缀的词是什么意思?

4

1 回答 1

9

您所指的词称为符号。

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

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

因此,例如,如果您有两个哈希,并且有一个名为 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'
于 2012-06-22T19:49:09.553 回答