Object, 基本上任何一本编程书籍我看到这个字眼都是直接漂过去的,“不就是个概念嘛 面向对象编程 云云...”
今天我才看到红宝书的第一句话是先解释什么是Object的。
Object 是表现数据的基本单位
对的 这是一种表现,我想表现1是一个整数 我想表现1.15是一个浮点数,我想表现“1”是一个字符。
然而对象是有类别,东西多了自然要归类,1和1.1 向上看齐的话就是数值,平行来看才有什么整数,浮点数,往下看 维度再次拉低 就还会有所谓的自然数 负数 什么的。
对象和类别的关系
- 数值 Numeric
- 字符串 String
- 数组 Array
- 散列 Hash
- 正则表达式 Regexp
- 文件 File
- 符号 Symbol
平时我们会说 “abc”是一个String类的对象,其实也可以说“abc”也是一个String类的实例(Instance)。
Variable 变量
变量是有作用域的,作用域其实可以理解为这个变量的 势力范围 ,就好比你在美国唐人街提二龙湖大哥的名号是不会有人理你的。反过来,你随便抓一个古惑仔 问他老大是谁 他和他老大是哪个堂口的 总是会问出来的。
局部变量和全局变量
我这有一个例子
#---TwoDragonLake.rb
$group.push("黑社会") #全局变量 因为各国叫法不同 所以我用Array类型来存
aLittleBoss = "二龙湖浩哥" #局部变量 出了葫芦屯还有人认?
那么这个时候 浩哥来日本了
#----Yakuza.rb
$LOAD_PATH.unshift(File.dirname(__FILE__))
$group = Array.new
$group.push("暴力团") #日本黑社会的统称吧
boss = "山田"
#---这个时候浩哥带队出现了
require "sub"
#---这个时候警察开始盘问了
puts "你们是谁?"
print $group
puts "------------------------"
puts "这里谁是扛把子?"
puts boss
你们觉得输出会是什么?条子是出现在Yakuza.rb这个地盘的 他们如果询问扛把子是谁?肯定不会问浩哥的,这里的扛把子只有一个,但全局变量却有两个group[0] & group[1]
条子都知道你们是黑社会 但小头目只认识本地的这个。 这就是局部和全局 在我的理解。
Constant 常量
常量 在我的理解就是 只能赋值一次的变量,而且是大写的。 Just it is.
pseudo-variable 伪变量
self true false nil
多重赋值
a , b, c = 1, 2 # => [1,2,nil]
a,b,c = 1,2,3,4,5 #=> [1,2,3]
#最实用的是这个
a,*b,c = 1,2,3,4,5 #=> [1,[2,3,4],5]
还有就是用Array赋值,不知道是不是Ruby独有的特性 反正很贴心
arr = [1,2,3]
a,b = arr
a # => 1
b # => 2
ary = [1,[2,3,4],5]
a,b,c = ary
#b => [2,3,4]
#也可以这么写
a,(b1,b2),c = ary