辛星浅析ruby中的symbol
来源:互联网 发布:linux登陆root用户 编辑:程序博客网 时间:2024/05/17 08:22
最近有位朋友问我如何理解ruby中的symbol,我也不知道如何解释,就在这里大致说一下自己的理解吧。
第一点,symbol怎么表示。
其实它和字符串的使用有点相似,它就是在字符串前面加上两个冒号即可,比如 :a 和 :"a"都是合法的symbol,而且它们指向的是同一个地方。
第二点,ruby内部就大量的使用symbol。
我们可以使用Symbol.all_symbols来查看当前都有哪些符号,就我目前来说就有四千多个,我们来个范例:
irb(main):002:0> Symbol.all_symbols.size=> 4481irb(main):003:0>
第三点,为什么要使用symbol。
这要从ruby的特性说起,因为ruby是一个完全的面向对象的语言,而且需要注意的是,如果我们声明两个"star"变量,它会分配两块内存,因此每声明一个字符串都会带来额外的内存开销,因此ruby就引入了symbol来节省内存开销。正如它的初衷一样,如果我们声明两个"star"的symbol,则只占用一块内存。而且类似需要占内存的东西还有很多,而ruby就可以把它们当做symbol来处理,这样,不论声明多少个,都只会占用同一块内存。
从这个角度上讲,当我们使用字符串只是来标记一个事物的时候,比如我们只是用它来作为散列表的下标使用,就可以考虑使用symbol。而在rails这种框架中尤其明显,因为可能我们需要不断的在各个方法中传递数据,会产生很大的内存开销,这时使用symbol就是一个相当不错的方式。
第四点,symbol与其他类型的关系。
需要记住的是,symbol只是一个标记,而字符串是一个对象,因此很多在字符串中可以执行的操作,在symbol中是无法执行的,它只是起到一个占位符的作用。不过我们可以通过to_s方法把一个symbol升级成为一个字符串,但是它不允许被再赋值。
暂时就先介绍到这里啦,可能思路有点混乱,之后再进行整理。
- 辛星浅析ruby中的symbol
- Ruby Symbol (Ruby中的冒号)
- Ruby中的Symbol
- 理解 Ruby Symbol (Ruby中的冒号)
- 理解 Ruby Symbol (Ruby中的符号)
- Ruby Symbol(ruby中的冒号) 与 ruby string 区别
- Ruby Symbol(ruby中的冒号) 与 ruby string 区别
- 浅析ruby中的yield关键字
- Ruby Symbol
- Ruby Symbol
- 浅析如何使用Ruby中的“split”方法
- 浅析Ruby中的methods,private_methods和instance_methods
- Ruby之symbol研究
- Ruby Symbol使用
- Ruby的符号(Symbol)
- Ruby Symbol使用
- 理解 Ruby Symbol
- Ruby 学习笔记 Symbol
- How to Create a Secure Login Script in PHP and MySQL
- leetcode 68:Text Justification细致分析,java实现
- 还在吐槽翻译的外版书质量差吗?谈谈我个人的理解
- Android 开发的17个建议,紧跟Google官方,进阶必看!
- java中重载,覆盖和隐藏的区别
- 辛星浅析ruby中的symbol
- Android 常用开发工具以及Mac常用软件
- (转)优秀的 python 机器学习库
- 基础排序算法与二分查找算法Java版本(下)
- 欢迎使用CSDN-markdown编辑器
- Android中常见的资源获取方式
- xgboost快速入门
- 新晨交换平台启停及相应问题解决
- Android EditText身份证等类型