1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Lập trình hướng đối tượng với S3 và R6 trong R

Connected

Bài tập

Viết Next Method

Khi một đối tượng có nhiều class, bạn có thể muốn gọi các method cho nhiều class đó. Điều này được thực hiện bằng NextMethod() (tài liệu).

Các S3 method hiện có dạng:

an_s3_method.some_class <- function(x, ...)
{
  # Xử lý cho some_class, sau đó
  NextMethod("an_s3_method")
}

Tức là, NextMethod() nên là dòng cuối cùng của method.

Hướng dẫn

100 XP

Biến kitty và hàm generic what_am_i() đã được định nghĩa sẵn trong workspace của bạn.

  • Khám phá workspace bằng ls.str().
  • Hoàn thiện định nghĩa method cat cho what_am_i().
    • Gọi message() (tài liệu) với nội dung "I'm a cat".
    • Gọi NextMethod() (tài liệu), truyền tên của generic dưới dạng chuỗi.
  • Định nghĩa method mammal cho what_am_i().
    • Tham số giống như method cat.
    • Gọi message() với nội dung "I'm a mammal".
    • Gọi NextMethod().
  • Định nghĩa method character cho what_am_i().
    • Tham số giống như method cat.
    • Gọi message() với nội dung "I'm a character vector".
    • Không gọi NextMethod().
  • Gọi what_am_i() với kitty làm đầu vào, và kiểm tra rằng cả ba thông điệp đều được hiển thị.