2.4Ruby类类型之符号(Symbol)

用于表示名称等标签的唯一对象。

:a

符号(symbol)可以理解为轻量的字符串,但符号不是轻量字符串,也不是字符串。符号是对象,一般用作标示符使用。很多 Ruby 初学者都在想办法搞清楚什么是符号和怎么使用符号。

符号最好的描述是身份证。一个符号代表了它是“谁”,而不是代表了它是“什么”。 打开 irb 来看一看他们的区别:

irb(main):001:0> :george.object_id == :george.object_id
=> true
irb(main):002:0> "george".object_id == "george".object_id
=> false
irb(main):003:0>

object_id 函数返回的是对象的身份标识。如果两个对象有相同的 object_id, 那么他们就是相同的(指向同一个内存地址)。 可以看出,当符号在使用过一次后,任何相同字符的符号都会在内存中指向同一个对象地址。 也就是说任何相同字符的符号的 object_id 都是相同的。

(“george”)的字符串的 object_id 并不相同,这表示他们在内存种指向不同对象地址。 每当您创建一个新的字符串的时候,Ruby 会在内存中为它分配新的空间。

当您犹豫该用符号还是字符串的时候,想一下究竟字符的标识更重要(比如 Hash key)还是内容更重要 (比如前面例子里的 “george” )。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/ruby/rubylang/18490.html

(0)
上一篇 2023年1月4日 22:37
下一篇 2023年1月5日 15:22

相关推荐

  • 1.4Ruby语言的类型(Type)

    1.整数(Integer)类 类名 描述 Integer 整数 2.任意精度浮点(BigDecimal)类 类名 描述 BigDecimal 精确精度浮点数 3.浮点(Float)类 浮点类型遵循IEEE 754二进制浮点算术标准。 类名 描述 Float 近似精度浮点数 4.真(TrueClass)类、假(False…

    Ruby语言教程 2022年12月4日
    01.3K0
  • 2.3Ruby类类型之字符串(String)

    1.单引号字符串 单引号字符串只支持转义反斜线(\)和单引号(‘),不支持其余转义。 单引号字符串不支持字符串插值。 2.双引号字符串 双引号字符串不仅支持转义反斜线(\)、单引号(‘)、双引号(“),还支持其余转义。 双引号字符串支持字符串插值。 转义字符 描述 \a 响铃 \b 退格 \t 水平制表符 \n 换行 …

    Ruby语言教程 2023年1月3日
    01.0K0
  • 1.7Ruby语言的表达式(Expression)

    Ruby的语法是面向表达式的,在Ruby中,所有“语句“(statement)实际上都是表达式(expression)。一切表达方法皆有值,表达式并不是都会返回有意义的值,即使那个值是 nil。

    Ruby语言教程 2022年12月7日
    03960

发表回复

登录后才能评论