## ------------------------------------------------------------------------
library(aoos)
Person <- defineRefClass({
Class <- "person" # this is the argument 'Class' in setRefClass
personName <- "character" # this is a field of class 'character'
initialize <- function(name) {
.self$personName <- name
.self$greet()
}
greet <- function() {
cat(paste0("Hello, my name is ", .self$personName, ".\n"))
}
})
ann <- Person("Ann")
ann
ann$personName
ann$personName <- "not Ann"
ann$greet()
## ------------------------------------------------------------------------
PrivatePerson <- defineRefClass({
Class <- "PrivatePerson"
contains <- "Private" # also just passed as argument to setRefClass
.personName <- "character"
initialize <- function(name) {
.self$.personName <- name
.self$greet()
}
greet <- function() {
cat(paste0("Hello, my name is ", .self$.personName, ".\n"))
}
})
ann <- PrivatePerson("Ann")
ann
stopifnot(inherits(try(ann$.personName, silent = TRUE), "try-error"))
ann$greet()
## ------------------------------------------------------------------------
removeClass("PrivatePerson")
PrivatePerson <- setRefClass(
Class = "PrivatePerson",
fields = list(.personName = "character"),
contains = "Private",
methods = list(
initialize = function(name) {
.self$.personName <- name
.self$greet()
},
greet = function() {
cat(paste0("Hello, my name is ", .self$.personName, ".\n"))
}
)
)
ann <- PrivatePerson("Ann")
ann
stopifnot(inherits(try(ann$.personName, silent = TRUE), "try-error"))
ann$greet()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.