Day1

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

你可能感兴趣的:(Day1 )