Мне интересно написать общий метод, который ведет себя на основе нескольких типов классов одного и того же объекта. Например, скажем, у нас есть следующее:
redApple <- function(){
structure(list(), class = c("apple", "red"))
}
greenApple <- function(){
structure(list(), class = c("apple", "green"))
}
eat <- function(x)UseMethod("eat")
eat.apple <- function(x) print("Eating apple")
color <- function(x) UseMethod("color")
color.red <- function(x) print("my food is red")
color.green <- function(x) print("my food is green")
Теперь мы создаем следующие объекты:
obj1 <- redApple()
obj2 <- greenApple()
Здесь color(obj1)
печатает my food is red
и color(obj2)
печатает my food is green
, в то время как оба eat(obj1)
и eat(obj2)
печатают Eating apple
.
Теперь я бы хотел, чтобы моя универсальная функция работала по-разному для obj1
и obj2
. Например, я бы хотел eat(obj1)
напечатать Eating red apple
и eat(obj2)
напечатать Eating green apple