以冒号为前缀的单词在 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 中的作用是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

VueJS:以冒号为前缀的 html 属性表示啥?

C语言中变量加冒号是啥意思

双冒号是啥意思?

for循环条件里冒号是啥作用

c语言的双冒号是啥意思::

ruby 学习笔记一