Предположим, что есть два пакета.
Package_A имеет этот класс:
setClass("Person",
slots = c(
name = "character",
age = "numeric"
)
)
setGeneric("age", function(x) standardGeneric("age"))
setMethod("age", "Person", function(x) x@age)
Package_B имеет похожий класс:
setClass("Person",
slots = c(
name = "character",
age = "numeric"
)
)
setGeneric("age", function(x) standardGeneric("age"))
setMethod("age", "Person", function(x) x@age * 10) # notice the difference here
Таким образом, пользователь загрузил оба пакеты в их рабочей среде:
library(Package_A)
library(Package_B)
Как в рабочей среде этого пользователя R разрешает путаницу при создании объекта "Person":
john <- new("Person", name = "John Smith", age = 7)
В рабочей среде этого пользователя как R решает вызов правильного метода:
age(john)