《Rubu基础教程第五版》第四章笔记 对象、变量和常量

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
>> 
原文地址:https://www.cnblogs.com/sidianok/p/12977292.html