当我说时{ :bla => 1, :bloop => 2 },该:怎么办?我在某处读到了它与字符串的相似之处,但在某种程度上却是一个符号。我对这个概念不太清楚,有人可以启发我吗?
3 回答
一只甜甜圈
TA贡献1836条经验 获得超5个赞
:foo是一个名为“ foo”的符号。符号具有明显的特征,即任何两个相同的符号将是相同的:
"foo".equal? "foo" # false
:foo.equal? :foo # true
这使得比较两个符号的速度非常快(因为只涉及指针比较,而不是像字符串中那样比较所有字符),而且您不会在同一符号周围成千上万个副本。
另外,与字符串不同,符号是不可变的。
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
在ruby中,每个对象都有一个唯一的对象标识符,如果您puts "hello".object_id
在irb中写入并按两次return键,则将获得2个不同的返回值,但是如果您写入:hello.object_id
2次,则将仅获得相同的一个返回值。那应该解释了差异。
- 3 回答
- 0 关注
- 868 浏览
添加回答
举报
0/150
提交
取消