多个返回值

类 / 方法

new_list_assistant <- function(data) {
  structure(list(data = data),
            class = "ListAssistant")
}

get_first_last <- function(x) {
  UseMethod("get_first_last")
}

# Several values come back as one list
get_first_last.ListAssistant <- function(x) {
  data <- x$data
  if (length(data) == 0) {
    return(list(first = -1, last = -1))
  }
  list(first = data[1],
       last = data[length(data)])
}

lst <- c(2, 3, 5)
assistant <- new_list_assistant(lst)
result <- get_first_last(assistant)

# No unpacking: take the parts by name
first <- result$first
# first = 2
last <- result$last
# last = 5

str(result)
cat("first =", first, "\n")
cat("last =", last, "\n")