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

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

Ruby中的鉤子方法詳解

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

Ruby的哲學理念是基于一個基本的要素,那就是讓程序員快樂。Ruby非常注重程序員的快樂,并且也提供了許多不同的方法來實現它。 它的元編程能力能夠讓程序員編寫在運行時動態生成的代碼。它的線程功能使得程序員有一種優雅的的方式編寫多線程代碼。 它的鉤子方法能讓程序員在程序運行時擴展它的行為。

上述的這些特性,以及一些其他很酷的語言方面,使得Ruby成為編寫代碼的優先選擇之一。 本文將探討Ruby中的一些重要的鉤子方法。我們將從不同方面討論鉤子方法,如它們是什么,它們用于什么,以及我們如何使用它們來解決不同的問題。 我們同時也了解一下一些流行的Ruby框架/Gem包/庫是如何使用它們來提供非??岬奶匦缘摹?/p>

我們開始吧。

什么是鉤子方法?

鉤子方法提供了一種方式用于在程序運行時擴展程序的行為。 假設有這樣的功能,可以在無論何時一個子類繼承了一些特定的父類時收到通知, 或者是比較優雅地處理一個對象上的不可調用的方法而不是讓編譯器拋出異常。 這些情況就是使用鉤子方法,但是它們的用法并不僅限于此。 不同的框架/庫使用了不同的鉤子方法來實現它們的功能。

在本文中我們將會討論如下幾個鉤子方法:

1.included
2.extended
3.prepended
4.inherited
5.method_missing

included

Ruby給我們提供了一種方式使用 模塊(modules) (在其他語言中被稱作 混入類(mixins))來編寫模塊化的代碼供其他的 模塊/類 使用。 模塊 的概念很簡單,它就是一個可以在其他地方使用的獨立代碼塊。

例如,如果我們想要編寫一些代碼在任何時候調用特定的方法都會返回一個靜態字符串。 我們姑且將這個方法稱作 name。你可能在其他地方也會想使用同一塊代碼。 這樣最好是新建一個模塊。讓我們來創建一個:
代碼如下:
module Person
  def name
    puts "My name is Person"
  end
end

這是一個非常簡單的模塊,僅有一個 name 方法用于返回一個靜態字符串。在我們的程序中使用這個模塊:

代碼如下:
class User
  include Person
end

Ruby提供了一些不同的方法來使用模塊。include 是其中之一。include 所做的就是將在 module 內定義的方法在一個 class 的實例變量上可用。 在我們的例子中,是將 Person 模塊中定義的方法變為一個 User 類實例對象的方法。 這就相當于我們是將 name 方法寫在 User 類里一樣,但是定義在 module 里的好處是可復用。 要調用 name 方法我們需要創建一個 User 的實例對象,然后再在這個對象上調用 name 方法。例如:
代碼如下:
User.new.name
=> My name is Person

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平利县| 天镇县| 都江堰市| 鄯善县| 益阳市| 志丹县| 诸暨市| 彰化县| 余干县| 台江县| 武安市| 奉新县| 双流县| 临城县| 扎赉特旗| 耒阳市| 韶关市| 海盐县| 奉化市| 奉贤区| 赤城县| 喀什市| 项城市| 阿荣旗| 博爱县| 岳普湖县| 安岳县| 廉江市| 饶平县| 广河县| 乌兰浩特市| 靖安县| 绥棱县| 阿鲁科尔沁旗| 施甸县| 弋阳县| 株洲市| 突泉县| 太原市| 云和县| 突泉县|