Ruby---字符串(String)与符号(Symbol)的区别

刚开始学习Ruby的时候,对于String 和 Symbol这两种类型有点疑惑,深入学习后记录他们这两者之间的区别。

1. 字符串和符号,都是Ruby中表示文本的方式
p "dog".to_sym  #=>  :dog
p :dog.to_s   #=> "dog"
2. 相同的符号是一个对象,相同的字符并不一定是一个对象
p "dog".equal?("dog")  #=> false 
p :dog.equal?(:dog)    #=> true

符号是不可变的,不能对符号进行修改。两个相同的符号一定是同一个对象。但是两个内容的字符串就不一定是同一个对象了。

3. 处理符号相比字符串,占用更少的资源 ,性能更优

因为字符串变量必须具有各种修改其内容的功能,所以字符串的维护和处理的开销就很大。但是有些时候,我们并不需要修改和处理创建的文本信息,这个时候就应该用符号,减少资源开销。

你可能感兴趣的:(Ruby---字符串(String)与符号(Symbol)的区别)