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.
Bài tập này là một phần của khóa học
Lập trình hướng đối tượng với S3 và R6 trong R
Hướng dẫn bài tập
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
catchowhat_am_i(). - Định nghĩa method
mammalchowhat_am_i().- Tham số giống như method
cat. - Gọi
message()với nội dung"I'm a mammal". - Gọi
NextMethod().
- Tham số giống như method
- Định nghĩa method
characterchowhat_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().
- Tham số giống như method
- Gọi
what_am_i()vớikittylàm đầu vào, và kiểm tra rằng cả ba thông điệp đều được hiển thị.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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()
___