以冒号为前缀的单词在 Ruby 中的作用是啥? [复制]
Posted
技术标签:
【中文标题】以冒号为前缀的单词在 Ruby 中的作用是啥? [复制]【英文标题】:What do words prefixed by a colon do in Ruby? [duplicate]以冒号为前缀的单词在 Ruby 中的作用是什么? [复制] 【发布时间】:2012-06-25 03:46:28 【问题描述】:可能重复:Understanding Symbols In RubyWhat 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 是什么意思?我依稀记得我正在阅读的 ruby 教程 (hlrb) 中的这些内容,但是当我浏览它时找不到它们。这些以冒号为前缀的词是什么意思?
【问题讨论】:
那些被称为symbols,是一种不可变的字符串。 【参考方案1】:您所指的词称为符号。
你问什么符号?它们或多或少类似于字符串,只是它们是不可变的(无法更改)并且是单例(无论您使用多少次,它们都只会在内存中创建一次)。
这意味着它们在任何地方都被用作键,因为它们的内存效率更高。
因此,例如,如果您有两个散列,并且有一个称为 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'
【讨论】:
以上是关于以冒号为前缀的单词在 Ruby 中的作用是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章