Primitive 泛型函数
R 的部分核心功能由 primitive(原生)函数实现。出于性能考虑,这类函数通过一种特殊方式直接访问 C 代码。典型示例包括语言元素(如 if 和 for)、运算符(如 + 和 $),以及数学函数(如 exp 和 sin)。一些 primitive 函数同时也是 S3 泛型;可使用 .S3PrimitiveGenerics 查看所有 S3 primitive 泛型的完整列表(参见 docs)。
当 S3 泛型是 primitive 时,其方法查找流程会略有不同。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?
___