国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Ruby的面向對象方式編程學習雜記

2019-10-26 19:28:52
字體:
來源:轉載
供稿:網友

打開類

可以重新打開已經存在的類并對之進行動態修改,即使像String或者Array這樣標準庫的類也不例外。這種行為方式稱之為打開類(open class)

猴子補丁

如果你粗心地為某個類添加了新功能,同時覆蓋了類原來的功能,進而影響到其他部分的代碼,這樣的patch稱之為猴子補丁(Monkeypatch)

類與模塊

Ruby的class關鍵字更像是一個作用域操作符,而不是類型聲明語句。class關鍵字的核心任務是把你帶到類的上下文中,讓你可以在里面定義方法。

每個類都是一個模塊,類就是帶有三個方法(new,allocate,superclass)的增強模塊,通過這三個方法可以組織類的繼承結構,并創建對象

Ruby中的類和模塊的概念十分接近,完全可以將二者相互替代,之所以同時保留二者的原因是為了保持代碼的清晰性,讓代碼意圖更加明確。使用原則:

希望把自己代碼包含(include)到別的代碼中,應該使用模塊 希望某段代碼被實例化或被繼承,應該使用類 模塊機制可以用來實現類似其它語言中的命名空間(Namespace)概念

Ruby中的::符號

Ruby中常量的路徑(作用域),類似與文件系統中的目錄,通過::進行分割和訪問,默認直接以::開頭(例: :: Y)表示變量路徑的根位置

什么是對象

對象就是一組實例變量外加一個指向其類的引用。對象的方法并不存在于對象本身,而是存在于對象的類中。

什么是類

類就是一個對象(Class類的一個實例)外加一組實例方法和一個對其超類的引用。Class類是Module類的子類,因此一個類也是一個模塊。

load與require方法的異同

通過load和require都可以進行導入別人的代碼,不同的是load方法用來加載代碼,如果不希望污染當前的命名空間,需要通過load(‘file.rb',true)顯式的要求創建一個匿名模塊來,接管file.rb的常量,require用于導入類庫,此外,就加載次數上load方法每次調用都會再次運行所加載文件,require則對每個庫文件只加載一次。

prepend、include與祖先鏈

祖先鏈用于描述Ruby對象的繼承關系,因為類與模塊是父子關系,所以祖先鏈中也可以包含模塊,prepend與include分別可以向鏈中添加模塊,不同的是調用include方法,模塊會被插入祖先鏈,當前類的正上方,而prepend同樣是插入到祖先鏈,但位置其他卻在當前類的正下方,另外通過Class.ancestors可以查看當前的祖先鏈

private規則

不能通過明確指定接受者來調用私有方法。私有方法只能通過隱性的接受者self調用(Object#send是個例外)

self相關

調用一個方法時,接受者會扮演self角色 任何沒有明確指定接受者的方法調用,都當做是調用self的方法 定義一個模塊(或類)時,該模塊(或類)會扮演self角色

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大冶市| 东台市| 信丰县| 芒康县| 桐梓县| 游戏| 清流县| 会宁县| 上思县| 南丹县| 蒙阴县| 西贡区| 胶州市| 广汉市| 明溪县| 荣昌县| 云安县| 汾阳市| 鄂托克前旗| 云龙县| 侯马市| 荆门市| 汝州市| 达州市| 祁门县| 德令哈市| 睢宁县| 洞口县| 玉门市| 阿拉尔市| 张北县| 大同市| 乌兰浩特市| 峨眉山市| 读书| 通辽市| 清镇市| 内江市| 临泉县| 安吉县| 惠来县|