“:foo”在红宝石中是啥意思[重复]

Posted

技术标签:

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

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

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

:symbol => value

这是什么意思?

【问题讨论】:

***.com/questions/6337897/… 可能重复 【参考方案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 我应该发表我的评论作为另一个答案:/

以上是关于“:foo”在红宝石中是啥意思[重复]的主要内容,如果未能解决你的问题,请参考以下文章

这个语法在ruby中是啥意思[重复]

“var FOO = FOO || ”(将变量或空对象分配给该变量)在Javascript中是啥意思?

“var FOO = FOO || ”(将变量或空对象分配给该变量)在Javascript中是啥意思?

$@ 在Linux Makefile中是啥意思

===在php中是啥意思[重复]

字符 ((?:(?:(?:) 在模式匹配中是啥意思?[重复]