【Ruby on Rails全栈课程】2.4 ruby的数据类型--符号(Symbol)、特殊值(True、False 和 Nil)

1、符号(Symbol)

符号对象表示Ruby中的一些名称(类名、方法名、变量名等)和一些字符串。表现形式有:name或者:“string”,创建的对象会储存在ruby的符号表中,相同内容的符号不会再重新创建,在一些情况下,使用符号(Symbol) 处理名字可以降低 Ruby 内存消耗,提高执行速度。

2、符号和字符串的区别
(1)符号的优点是降低ruby的内存消耗,从而提高执行速度,符号的内容如果是相同的,则不会创建新的Symbol(符号)对象。字符串内容如果是相同的,还是会创建新的String(字符串)对象。

可以通过 object_id 方法来得到一个对象标识符(对象标识符相当于对象的地址,可以用过对象标识符来区别是否是一个对象),我们通过代码来看看符号和字符串的区别

#定义两个相同的符号
irb(main):011:0> foo_1 = :"hello"
=> :hello
irb(main):012:0> foo_2 = :"hello"
=> :hello
#两个相同符号的对象标识符一样
irb(main):015:0> foo_1.object_id
=> 8447388
irb(main):016:0> foo_2.object_id
=> 8447388
#定义两个相同的字符串
irb(main):013:0> foo_3 = "hello"
=> "hello"
irb(main):014:0> foo_4 = "hello"
=> "hello"
#两个相同符号的对象标识符不一样
irb(main):017:0> foo_3.object_id
=> 70209820671880
irb(main):018:0> foo_4.object_id
=> 70209820665580

根据上面例子可以看出相同的内容,符号不会创建新的对象,但是字符串会创建新的对象,在某些情况下,字符串的这种特性就会浪费内存

那么我们什么时候用字符,什么时候用字符串呢?可以参考以下标准:

  • 一个字符定义之后可能会变化,则用String(字符串)
  • 一个字符定义之后不会变化,则用Symbol(符号)。比如哈希表的关键字
3、类型转换
(1)字符串转符号 to_sym
irb(main):019:0> "hello".to_sym
=> :hello
(2)符号转字符串 to_s
irb(main):020:0> :hello.to_s
=> "hello"
4、特殊值

Ruby的特殊值有true、false、nil

Ruby 中没有 Boolean 类,True、False 和 Nil 分别是 TrueClass、FalseClass 和 NilClass 的单键实例。

常用于语句的判断中 在ruby中除了nil和false表现为false,其他的均表现为true。0也表现为true,这里注意和其他语言的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵宁一

点赞是最好的赞赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值