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")