`
calmness
  • 浏览: 350432 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

ruby中标志的必然

    博客分类:
  • Ruby
阅读更多

        注册终于满了三天,终于可以动手写BLOG了,有点郁闷,javaEye无论从哪方面来看,都是不错的社区,唯一让俺觉得有点烦的就是发帖的这个限制,必须要三天后才可,本来看到一些不错的帖子,想回帖或者是跟大家一起讨论的时候,结果看到回复处的“三天”提示,唉。。。。。。

        呵呵,发发牢骚,三天前在这里论坛看到一篇理解ruby标志的文章,好像是翻译的吧,看了下,感觉不错,看到后面朋友们的回复,让俺获益良多,本来自己也想凑凑热闹回复一下,发表自己的看法,结果“三天”提示让俺偃旗息鼓,今天终于到了期限,不用再看到那可恶的“三天”提示了,呵呵。

        关于ruby中标志的概念就不多说了,在论坛里已经有很详细的解释,在论坛那帖子的回复里,很多朋友都是针对于RUBY中标志和JAVA字符串池哪个处理得更好而进行的讨论,其实关于java做得好还是ruby做得好,我个人认为不应该这样去看,我们应该从ruby本身的语言特性来看,在ruby中,任何一个字面值都是一个独立的对象,包括数字,字符等,问题就在“独立”这两个字上,ruby本身的意愿就是每一个字面值都是独立的,例如:
puts "aaa".object_id.to_s  >> 21718840

puts "aaa".object_id.to_s  >> 21718710

这两个是完全不同的字符串对象,ruby的本意是完全面向对象,这种同值而不同对象的方式是ruby的需要,也是完全面向对象的需要,至少我是如此认为,所以在这一特性之下,ruby就自然不能使用java的字符串池方式,而symbol的出现也就是必然的了,有的人说java处理得好,有的人说ruby处理的好,其实这些看法我个人觉得就过于片面,凭心而论,我个人觉得java字符串池的方式更省心,也更好用,但是就面向对象的角度来看,symbol更合理,第一次来这里发表看法,个人愚见,由于技术有限,所写有误处请指正,谢谢!

分享到:
评论
5 楼 刑天战士 2007-02-28  
symbol确实是比较地址,我不知道动态语言怎么实现的,反正在C里面,专门有一个symbol table是用来存放symbol的,不过C中的symbol好像是有类型的……
4 楼 calmness 2007-02-24  
我只是认为这一点不应该从其实现不同这方面来看,而更应该注重他如此做的用意,也许语言创作者本身也是想做到相同字面值不同对象这一点,从这点看来,symbol的出现属于必然,当然这也只是我一家的看法,事实上语言创作者本意如何也只有他自己才知道了。
3 楼 bencode 2007-02-23  
楼主:
引用
这种同值而不同对象的方式是ruby的需要,也是完全面向对象的需要,至少我是如此认为,所以在这一特性之下,ruby就自然不能使用java的字符串池方式


不以为然, java对常量字符串产用字符串池的方式, 以及ruby 不使用, 这是两者实现上的问题. 首先因为java 需要编译, 这样在编译期就可以进行优化, 所以这只是字符串优化上的一种措施, 而Ruby 所有对象都是在运行时构建起来的,所以如果再进行字符串池的操作, 就是画蛇添足了.

楼主:
引用
而symbol的出现也就是必然的


必然吗?

一个类而已

towjzhou:
就一个原因,更快,因为比较地址。

何出此言?
2 楼 calmness 2007-02-17  
这个当然,两者目的基本都是一样的
1 楼 towjzhou 2007-02-17  
就一个原因,更快,因为比较地址。

相关推荐

Global site tag (gtag.js) - Google Analytics