第九章 運算子

2022-09-02 01:06:07 字數 3878 閱讀 9244

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...