【问题标题】:what does ":foo" mean in ruby [duplicate]“:foo”在红宝石中是什么意思[重复]
【发布时间】:2012-08-27 04:20:43
【问题描述】:

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

在学习 Ruby 时,我偶尔会遇到“:”运算符。通常我看到它的形式是

:symbol => value

这是什么意思?

【问题讨论】:

标签: ruby


【解决方案1】:

它只是表明它是一个符号而不是一个字符串。在 ruby​​ 中,通常使用符号而不是字符串。

{:foo => value}
{'foo' => value}

它基本上是一种表达字符串的简写方式。它不能像您想象的那样包含空格,因此符号通常使用下划线。

你自己试试这个:

foo = :bar
foo.to_s # means to string
baz = 'goo'
baz.to_sym # means to symbol

【讨论】:

  • 实际上,关于符号不能包含空格的说法是错误的;符号可以包含字符串可以包含的任何内容。 :"hello world" 包含一个空格,但它是一个完全有效的符号。字符串和符号之间的区别在于,每次引用同一个符号时,符号总是在内存中占据相同的位置。这很好,因为如果您以正确的方式使用它可以节省内存;这很糟糕,因为如果你不这样做,它会消耗内存。请参阅:Symbol
  • 将符号归结为“基本上是表达字符串的简写方式”是非常错误和误导的。符号不是字符串。
  • @AndrewMarshall 我不认为符号应该被用作字符串;这是使用符号的糟糕方式之一,而且很糟糕,尤其是对于 Web 开发而言。对不起,如果它是那样的。
  • @drderp:我认为 Andrew Marshall 指的是上面的答案,而不是您的评论。你的评论是正确的。答案是完全错误的。很遗憾它被接受了。
  • @undur_gongor 我应该发表我的评论作为另一个答案:/
猜你喜欢
  • 2014-10-22
  • 1970-01-01
  • 2015-07-14
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
相关资源
最近更新 更多