“: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”在红宝石中是啥意思[重复]的主要内容,如果未能解决你的问题,请参考以下文章
“var FOO = FOO || ”(将变量或空对象分配给该变量)在Javascript中是啥意思?