Ruby也是万物皆对象的语言
Ruby中内置的一些类
Numeric 数值
String 字符串
Array 数组
Hash 哈希
Regexp 正则表达式
File 文件
符号 Symbol
变量
局部变量 (local variable)
全局变量(global variable)
实例变量(instance variable)
类变量(class variable)
局部变量已小写字母或者_开头,全局变量以$开头,实例变量以@开头,类变量以@@开头
还有一个伪变量,为nil、true、false、self
局部变量和全局变量 (这个跟Python的区别非常之大)
在一个库里面,也就是Python中的模块,就是一个文件里面,定义的变量,Python中就是全局变量,但Ruby确实局部变量。
该变量只能在库中进行使用,如果需要给库中的函数或者类使用,必须已传参的形式进行操作。
全局变量更加夸张,当导入一个库的时候,会自动导入库中的全局变量,如果本地文件中的全局变量与库的重复,库中的全局变量会覆盖本地的
1 0 shijianzhongdeMacBook-Pro:chapter_4 shijianzhong$ cat sub.rb $x = 1 x = 1 shijianzhongdeMacBook-Pro:chapter_4 shijianzhong$ cat scopetest.rb $x = 0 # 定义全局变量 x = 0 require_relative "sub" p $x p x shijianzhongdeMacBook-Pro:chapter_4 shijianzhong$
所以在实际开发中要少使用$x这样的全局变量.
常量一般用全是大写的字符定义,这个与Python类似
>> TT = 1 => 1 >> TT =2 (irb):2: warning: already initialized constant TT (irb):1: warning: previous definition of TT was here => 2 >>
常量的值也可以修改,但会有警告
保留字
就像end def class 这些
4.6多重赋值,这里的操作基本跟Python差不多,用*来接收不定长参数
合并执行多个赋值
>> a,b,*c = 1,2,3,4,5 => [1, 2, 3, 4, 5] >> p a,b,c 1 2 [3, 4, 5] => [1, 2, [3, 4, 5]] >> a, *b, c = "12345" => "12345" >> p a,b,c "12345" [] nil => ["12345", [], nil] >> a, *b, c = 1,2,3,4,5 => [1, 2, 3, 4, 5] >> p a,b,c 1 [2, 3, 4] 5 => [1, [2, 3, 4], 5] >>
交换变量的值
>> a, b = 1 , 2 => [1, 2] >> a => 1 >> b => 2 >> a,b = b ,a => [2, 1] >> a => 2 >> b => 1 >>
>> >> a,b,c = [1,2,3] => [1, 2, 3] >> a => 1 >> b => 2 >> c => 3 >> a, = [10,11,12] # 这种写法比较骚 => [10, 11, 12] >> a => 10 >>