不管字符串变量也好,符号变量也好,都是用来表示文本的,它们之间,也可以互相转换(通过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
这个怎么说好呢,它们无非就是一些运算符而已,每个符号的用法也有很多种,具体怎么用可以通过看书、看例子来学习,没必要一下记住那么多。比如:
%#取余运算,如8%3=2
{}#可用在输出,如输出y的值:puts"#{y}",也可用在Hash表如 $R_Key_Hash = {}
. #一般表示某种属性或方法,如对于一个窗口,self.x = 0 表示这个窗口的x坐标为0。
又如
Class Person
def Hello
puts "Hello,my name is Tom."
end
end
p=Person.new
p.Hello #执行这个程序就会输出 Hello,my name is Tom.
? #表判断,如opacity = black_color ? 255 : 128,这个意思是如果是黑色,就不透明,否则为128
, #逗号在数组中较常见,如a = ["1","2","3"],数组a的三个元素依次是1,2,3
‘ #这个在对文件的操作比较常见,如下例:
if Dir.glob('txt').size == 0 #如果文件夹txt不存在
Dir.mkdir('./txt') #那么生成一个名字叫txt的文件夹
end
! # 表示 非 如 if x != 2 表示如果x不等于2
: #这个可能用在属性里
如:
class Game_Picture
attr_reader :number # 图片编号
attr_reader :origin # 原点
attr_reader :x# X 坐标
attr_reader :y# Y 坐标
attr_reader :tone # 色调
attr_reader :angle# 旋转角度
end
#分号的话,一般是写程序每行结束才用到,但其实ruby的每行结束是可以不用分号的,回车换行就行,我也只是在用Interactive Ruby编译器时才会用分号
从我上边的回答可看出,基本每个符号都用几种用法,平时多学习,多积累就好了
"abcdefghijklmnopqrstuvwxyz".slice(9, 6)找第10个字符开始的6个字符 也就是第10到第15个 索引从0开始 所以是9, 6
当然因为这是 ruby 所以我们还可以这么写
"abcdefghijklmnopqrstuvwxyz".slice 9, 6
另外我们还有带叹号版本的 slice 方法 它会返回被截取的部分 同时把原始字符串中被截取的部分删除
s = "abcdefghijklmnopqrstuvwxyz"s.slice! 9, 6 # jklmnop s # abcdefghipqrstuvwxyz