当前位置: 老葡京网站娱乐 > 编程语言 > 其它 > 正文

详解Ruby语言中的String

时间:2011-11-16 dennis_zane

老葡京网站娱乐 www.sdguanhua.com Ruby语言中的String是mutable的,不像java、C#中的String是immutable的。比如

str1="abc"
str2="abc"

在java中,对于字面量的字符串,jvm内部维持一张表,因此如果在java中,str1和str2是同一个 String对象。而在Ruby中, str1和str2是完全不同的对象。同样,在java中对于String对象的操作都将 产生一个新的对象,而Ruby则是操纵同一个对象,比如:

str="abc"
str.concat("cdf")

此时str就是"abccdf"。Ruby对String是怎么处理的呢?我们只谈谈c ruby中的实现,有兴趣的先看看 这篇文章《管窥Ruby——对象基础》。在ruby.h中我们可以看到String对象的结构,Ruby中的对象(包括 类也是对象)都是一个一个的struct,String也不能例外:

struct RString {
struct RBasic basic;
long len;
char *ptr;
union {
long capa;
VALUE shared;
} aux;
};
//ruby.h