Modifying parameters

Classes / Methods

new_logger <- function() {
  structure(list(), class = "Logger")
}

print_max5 <- function(logger, data) {
  UseMethod("print_max5")
}

print_max5.Logger <- function(logger, data) {
  # The argument is a local copy
  data <- substr(data, 1, 5)
  cat(data, "\n")
}

logger <- new_logger()
data <- "1234567"
print_max5(logger, data)
# prints "12345"

# The caller's string is unchanged
cat("data =", data, "\n")
# data = 1234567

# substr() never fails past the end
print_max5(logger, "123")
# prints "123"