Ruby 标志对象
本章节我们要介绍一种Ruby独有的标志对象( Symbol ),了解标志对象的定义方式以及存储机制,了解标志对象与字符串对象的区别以及一些常用的实例方法。
1. 什么是标志对象
标志是 Symbol 类的唯一实例,通常用于标识特定资源。标志是唯一的,因为在运行的程序中只能为特定标志创建 Symbol 类的一个实例。从特点上来讲,它更像一个字符串。
实例:
> :hello.object_id
=> 1277788
> :hello.object_id
=> 1277788
解释 :在这里,我们可以看到:hello符号仅创建一次,因为两次调用:hello.object_id
返回相同的对象标识符。
而字符串则不同,即使字符串的内容一样,他在被调用的时候也会创建一个新的 String 对象。
实例:
> 'hello'.object_id
=> 70300743069360
>'hello'.object_id
=> 70300743056220
2. 如何创建标志对象
我们在需要创建的内容之前加上一个冒号:
即可创建一个 Symbol 对象。
实例:
> :ruby
=> :ruby
:ruby.class
=> Symbol
注意事项 :一定要是字母开头,数字不能在最前面。
3. 何时会用到标志对象
3.1 表示方法和实例变量的名称
实例:
attr_reader :title
attr_reader
之后的:title
是代表@title
实例变量的符号。这块您将会在 Ruby类的创建 一章学习到。
3.2 作为哈希的key
实例:
hash = {a: 1, b: 2, c: 3}
哈希的概念我们会在 Ruby哈希 章节中学习。
3.3 元编程中传递参数
符号可用于元编程( Metaprogramming )方法中,例如send
:
实例:
[1,2,3].send(:first)
元编程会在进阶时候为您解答。
4. 标志类型的实例方法
注意事项 :标志类型仅拥有少量的字符串类型的方法而且无法更改,如果需要对标志的内容进行操作需要把标志转换成字符串。
4.1 转换成字符串
您可以使用to_s
方法执行此操作。
实例:
> :message.to_s
=> "message"
同样您也可以使用to_sym
方法将字符串转换成Symbol类型,Symbol也拥有这个方法,这个返回值的方法是它本身。
实例:
> "message".to_sym
=> :message
4.2 大小写转换
这个方法和字符串一样使用downcase
和upcase
。
> :abc.upcase
=> :ABC
> :ABC.downcase
=> :abc
4.3 获取标志的长度
使用length
或者size
。
> :hello.length
=> 5
> :hello.size
=> 5
4.4 empty?
判断 Symbol 对象是否为空字符串。
> :"".empty?
=> true
5. 小结
本章中我们学习了什么是标志对象,在表示方法和实例变量名称、哈希 key 值、元编程传参中使用标志对象。标志更像字符串拥有字符串的部分方法,如何和字符串转换。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。