Symbol

Symbol

        在Ruby中,有一种奇怪的对象,在一个变量前加一个冒号“:”,这就是Ruby的Symbol,Symbol是Symbol类的 实例,Symbol形式上和字符串很像,但是两者却有区别,首先Symbol不是String类对象,String类的很多方法不能作用到Symbol上 面,然后一个显著的区别就是只要给定一个名字,就唯一确定了一个Symbol对象,而字符串即使是相同,也是不同的对象,怎么理解这句话,看下边的示例:

        

        稍作解释:前三个:test或者:”test”是Symbol对象,其object_id都是86600,说明他们是同一个对象,内存中只存在一份;后三个是”test”字符串的对象,其object_id都互不相同,说明他们是三个不同的对象。

        Symbol和字符串可以互相转换Symbol通过to_s方法转换成为字符串,字符串可以通过to_sym或者intern方法转换成为Symbol。

        为什么要有Symbol呢?节约内存,相比String对象,Symbol占用内存较少,他存于Ruby的符号表中,并且不会出现多个的副本,可以用来做哈希表的关键字,也经常用作类中可读可写的属性(例如:attr_accessor :user)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值