ruby 的運算子大多都是作為例項方法提供給我們使用的,因此我們可以很方便地定義或者重定義運算子,改變其原有的含義。但是,表 9.3 中列舉的運算 符是不允許修改的。
二元運算子
definspect # 用於顯示
"(#
,#
)"
end#左側是方法呼叫者定義時可以不寫,右側other就是方法的引數
def+
(other
) # x、y 分別進行加法運算
self.class.new(x + other
.x, y + other
.y)end
def-
(other
) # x、y 分別進行減法運算
#如下改成point.new(x - other.x, y - other.y)也行
self.class.new(x - other
.x, y - other
.y)end
endpoint0
=point.new(3, 6)
point1
=point.new(1, 8)
p point0 #=> (3, 6)
p point1 #=> (1, 8)
#point0就是呼叫者(也叫方法接收者),+是方法,point1是方法的引數
p point0
+ point1 #=> (4, 14)
p point0
- point1 #=> (2, -2)
(2)可定義的一元運算子有 +、-、~、! 4 個。它們分別以 +@、-@、~@、!@ 為方法名進行方法的定義。下面就讓我們試試在 point 類中定義這幾個運算子:
class point
attr_reader
:x,:y
def initialize
(x=0, y
=0)@x,@y= x
, yend
definspect # 用於顯示
"(#
,#
)"
enddef +@
dup # 返回自己的副本
end
def-@
self.class.new(-x, -y) # 顛倒x、y 各自的正負
end
def~@
self.class.new(-y, x) # 使座標翻轉90 度
end
endpoint
=point.new(3, 6)
p +point #=> (3, 6)
p -point #=> (-3, -6)
p ~point #=> (-6, 3)
(3)陣列、雜湊中的 obj[i] 以及 obj[i]=x 這樣的方法,稱為下標方法。定義下標方法時的方法名分別為 和 =。在**清單 9.3 中,我們將會定義 point 類例項 pt 的下標方法,實現以 v[0] 的形式訪問 pt.x,以 v[1] 的形式訪問 pt.y。
class point
attr_accessor
:x,:y
def initialize
(x=0, y
=0)@x,@y= x
, yend
definspect # 用於顯示
"(#
,#
)"
enddef
(index
) #這個定義看著彆扭,實際呼叫時就是 接收者[index]
caseindex
when0
xwhen1
yelse
raiseargumenterror
,"out of range `#
'"
endend
def =
(index
, val
) #這個定義看著彆扭,實際呼叫時就是 接收者[index]=val
caseindex
when0
self.x = val
when1
self.y = val
else
raiseargumenterror
,"out of range `#
'"
endend
endpoint
=point.new(3, 6)
p point
[0] #=> 3
p point
[1] = 2 #=> 2 必須把上面y訪問級別改為attr_accessor,不然因為attr_reader唯讀,會報錯沒有y=這個寫的方法
p point
[1] #=> 2
p point
[2] #=> 錯誤(argumenterror)
第九章(筆記)
轉移指令是可以修改ip,或同時修改cs和ip的指令 offset 是用於提取標號偏移位址的操作符 jmp在第2章裡說到時用於修改ip或同時修改cs和ip的轉移指令,這章裡單獨的jmp指令是乙個無條件的轉移指令 jmp short 標號 是實現段內短轉移 jmp near ptr 標號 是實現段內近轉...
第九章作業
班級 0401304 學號 2013211526 姓名 鄧小俊 2.身份驗證 依據使用者所提供的身份資訊,來進行登入驗證,可以再細分為使用者是否可以登入sql sever 使用者是否可以登入到指定的目標資料庫等。授權 已通過身份驗證的使用者,檢查其所被賦予的許可權,是否可以訪問或者執行目標的物件 3...
第九章 引用
引用擁有指標的所有功能,只是語法更加的簡單 1 引用就是別名,變數的另外乙個名字,變數和別名它們的位址是一樣的,操作別名就是操作變數 2 引用就是別名常量,一旦引用被初始化就不能再改變了 可以理解為指標常量,指向的值不能改變,能改變的只是它的該位址處的值 3 引用物件huamn mike human...