【问题标题】:What do words prefixed by a colon do in Ruby? [duplicate]以冒号为前缀的单词在 Ruby 中的作用是什么? [复制]
【发布时间】:2012-06-25 03:46:28
【问题描述】:

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

【问题讨论】:

  • 那些被称为symbols,是一种不可变的字符串。

标签: ruby-on-rails ruby colon


【解决方案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'

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2017-03-25
    • 1970-01-01
    • 2011-01-17
    • 2019-11-19
    • 2011-06-06
    • 2017-12-10
    相关资源
    最近更新 更多