Object, 基本上任何一本編程書籍我看到這個字眼都是直接漂過去的混狠,“不就是個概念嘛 面向?qū)ο缶幊?云云...”
今天我才看到紅寶書的第一句話是先解釋什么是Object的。
Object 是表現(xiàn)數(shù)據(jù)的基本單位
對的 這是一種表現(xiàn)脂男,我想表現(xiàn)1是一個整數(shù) 我想表現(xiàn)1.15是一個浮點數(shù),我想表現(xiàn)“1”是一個字符思杯。
然而對象是有類別凑兰,東西多了自然要歸類寥茫,1和1.1 向上看齊的話就是數(shù)值,平行來看才有什么整數(shù)矾麻,浮點數(shù)纱耻,往下看 維度再次拉低 就還會有所謂的自然數(shù) 負數(shù) 什么的。
對象和類別的關(guān)系
- 數(shù)值 Numeric
- 字符串 String
- 數(shù)組 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("暴力團") #日本黑社會的統(tǒng)稱吧
boss = "山田"
#---這個時候浩哥帶隊出現(xiàn)了
require "sub"
#---這個時候警察開始盤問了
puts "你們是誰?"
print $group
puts "------------------------"
puts "這里誰是扛把子?"
puts boss
你們覺得輸出會是什么澎媒?條子是出現(xiàn)在Yakuza.rb這個地盤的 他們?nèi)绻儐柨赴炎邮钦l?肯定不會問浩哥的波桩,這里的扛把子只有一個戒努,但全局變量卻有兩個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