开始使用免费开始使用

编写 Next 方法

当对象具有多个类时,您可能希望依次调用这些类对应的方法。可以使用 NextMethod()文档)实现。

S3 方法现在应写成如下形式:

an_s3_method.some_class <- function(x, ...)
{
  # 先处理 some_class,然后
  NextMethod("an_s3_method")
}

也就是说,NextMethod() 应该是方法的最后一行。

本练习是课程的一部分

R 中的 S3 与 R6 面向对象编程

查看课程

练习说明

变量 kitty 和泛型函数 what_am_i() 已在您的工作区中预定义。

  • 使用 ls.str() 检查您的工作区。
  • 完成 what_am_i()cat 方法定义。
    • 使用 message()文档)输出 "I'm a cat"
    • 调用 NextMethod()文档),并将泛型的名称作为字符串传入。
  • 定义 what_am_i()mammal 方法。
    • 参数与 cat 方法相同。
    • 使用 message() 输出 "I'm a mammal"
    • 调用 NextMethod()
  • 定义 what_am_i()character 方法。
    • 参数与 cat 方法相同。
    • 使用 message() 输出 "I'm a character vector"
    • 不要调用 NextMethod()
  • kitty 作为输入调用 what_am_i(),确认会显示以上三条消息。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Inspect your workspace
ls.str()

# cat method
what_am_i.cat <- function(x, ...)
{
  # Write a message
  ___
  # Call NextMethod
  ___
}

# mammal method
___ <- ___

# character method
___ <- ___

# Call what_am_i()
___
编辑并运行代码