带构造函数

类型初始化 / 类

new_phone <- function(model) {
  structure(list(model = model), class = "Phone")
}

# No overloads: a default instead
new_employee <- function(first_name, last_name,
                         personal_phone = NULL) {
  structure(list(first_name = first_name,
                 last_name = last_name,
                 personal_phone = personal_phone),
            class = "Employee")
}

nokia_phone <- new_phone("Nokia 6610")
kim <- new_employee("Victoria", "Kim",
                    new_phone("iPhone 18"))

# Arguments by name, in any order
lee <- new_employee(last_name = "Lee",
                    first_name = "Ann")
no_phone <- is.null(lee$personal_phone)

cat("nokia_phone$model =",
    nokia_phone$model, "\n")
cat("kim$first_name =", kim$first_name, "\n")
cat("kim$personal_phone$model =",
    kim$personal_phone$model, "\n")
cat("no_phone =", no_phone, "\n")