new_greeting <- function(name) {
structure(list(name = name),
class = "Greeting")
}
# ... lets methods add their own parameters
say_hello <- function(greeting, ...) {
UseMethod("say_hello")
}
say_hello.Greeting <- function(greeting,
message = "Hello",
...) {
cat(message, ", ", greeting$name, "!\n",
sep = "")
}
greeting <- new_greeting("Ann")
say_hello(greeting)
# prints "Hello, Ann!"
say_hello(greeting, "Hi")
# prints "Hi, Ann!"