不管字符串变量也好,符号变量也好,都是用来表示文本的,它们之间,也可以互相转换(通过to_sym和to_s):
>> "book".to_sym
=>:book
>> :track.to_s
=>"track"
2. 相同的符号是一个对象,相同的字符并不一定是一个对象
这就是符号和字符串最大的差别,符号是不可变的,不能对一个符号进行修改。所以说,两个看起来相同的符号一定是一个对象,但是说两个看起来一样的字符串是一个对象,就不对了。
这里,我们用 equal? 方法检验这一点,当两个对象相同时,equal返回true,反之是false:
>> :book.equal?(:book)
=>true
>> "book".equal?("book")
=>false
这是ruby里“宇宙飞船运算符”。运算符的左边和右边相比较,左边小于右边返回负数,相等返回0,大时返回正数。
宇宙飞船运算符主要用于排序。对元素的大小进行判定。