Если мне нужно по-разному обрабатывать объекты R в соответствии с их классом, я могу либо использовать if
и else
в одной функции:
foo <- function (x) {
if (inherits(x, 'list')) {
# Foo the list
} else if (inherits(x, 'numeric')) {
# Foo the numeric
} else {
# Throw an error
}
}
Или я могу определить метод:
foo <- function (x) UseMethod('foo')
foo.list <- function (x) {
# Foo the list
}
foo.numeric <- function (x) {
# Foo the numeric
}
Каковы преимущества каждого подхода? Есть ли последствия для производительности?