開始使用免費開始

建立 S3 方法(2)

如果在泛型上找不到合適的方法,就會丟出錯誤。例如,目前 get_n_elements() 只有 data.frame 可用的方法。如果你改把矩陣傳給 get_n_elements(),就會看到錯誤。

> get_n_elements(matrix())
Error: no applicable method for 'get_n_elements' applied to an object of class "c('matrix', 'array', 'logical')"

與其為每種輸入都寫上一大堆方法,你可以建立一個處理所有「沒有特定方法」之型別的通用方法。這稱為「預設(default)」方法;它的名稱一律是 generic.default。例如,print.default()文件)會列印任何沒有自己 print()文件)方法的物件型別。

本練習屬於課程

在 R 中使用 S3 與 R6 的物件導向程式設計

檢視課程

練習說明

泛型 get_n_elements() 與其在 data.frame 上的方法已在你的工作空間中定義。

  • 使用 ls.str()文件)來探索你的工作空間。
  • get_n_elements() 撰寫一個 S3 預設方法。
    • 函式名稱應為泛型名稱,接著一個 .,再接上 default
    • 輸入引數應為 x...
    • 函式主體應只有一行,回傳任意物件中的元素數量。請用和「Make it Classy(1)」練習裡西洋棋遊戲相同的技巧。
  • ability.cov資料集文件)資料集上呼叫你的方法,並將結果指定給變數 n_elements_ability.cov

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# View predefined objects
___

# Create a default method for get_n_elements
___ <- ___




# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___
編輯並執行程式碼