Primitive 泛型函式
R 的某些核心功能是以 primitive 函式定義的,為了效能,它們使用特殊方式存取 C 程式碼。Primitive 函式的例子包含語言元素(如 if 與 for)、運算子(如 + 與 $),以及數學函式(如 exp 與 sin)。Primitive 函式中也包含 S3 泛型;你可以用 .S3PrimitiveGenerics 取得完整的 S3 primitive 泛型清單(docs)。
當一個 S3 泛型是 primitive 時,R 尋找方法(method)的流程會稍有不同。R 會先如常依據 class(docs)找方法;若沒找到,就會呼叫內部的 C 程式碼函式。(這和一般的泛型不同;一般泛型若找不到方法會拋出錯誤。)這也代表即使你覆寫了物件的類別,像是計算長度這類的基本行為也不會被破壞。
本練習屬於課程
在 R 中使用 S3 與 R6 的物件導向程式設計
練習說明
工作空間中已有一個清單物件,類別被覆寫為 "hairstylist",並指派給變數 hair。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# View the structure of hair
___
# What primitive generics are available?
___
# Does length.hairstylist exist?
___
# What is the length of hair?
___