Rất “Classy”
Biến có thể có nhiều hơn một lớp. Khi đó, class() (tài liệu) sẽ trả về một vector ký tự có độ dài lớn hơn 1.
Tương tự, bạn có thể gán nhiều lớp bằng cách gán một vector ký tự cho class(). Hãy sắp xếp các lớp theo thứ tự từ cụ thể nhất đến tổng quát hơn từ trái sang phải, vì bạn muốn bắt đầu với hành vi phù hợp nhất cho đối tượng của mình. Ví dụ:
x <- c("a", "e", "i", "o", "u")
class(x) <- c("vowels", "letters", "character")
Bạn có thể kiểm tra các lớp khác bằng hàm đa dụng inherits() (tài liệu). Ví dụ:
inherits(x, "vowels")
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 đã được định nghĩa sẵn trong workspace của bạn.
- Xem
kittybằng cách gõ tên của nó. - Gán các lớp
"cat","mammal", và"character"cho biếnkitty. - Kiểm tra rằng
kittycó các lớp"cat", rồi"mammal", rồi"character"(lần lượt, theo thứ tự đó) bằnginherits(). - Kiểm tra rằng
kittyvẫn là một vector ký tự bằngis.character(). - Kiểm tra rằng
kittykhông có lớp"dog".
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.
# View the kitty
kitty
# Assign classes
___ <- ___
# Does kitty inherit from cat/mammal/character?
inherits(___, "___")
___
___
# Is kitty a character vector?
___
# Does kitty inherit from dog?
___