library(knitr)
knit("1. Class.Rmd")
## 
## 
## processing file: 1. Class.Rmd
## 
  |                                                                                                                         
  |                                                                                                                   |   0%
  |                                                                                                                         
  |..........                                                                                                         |   9%                   
  |                                                                                                                         
  |.....................                                                                                              |  18% (unnamed-chunk-14)
  |                                                                                                                         
  |...............................                                                                                    |  27%                   
  |                                                                                                                         
  |..........................................                                                                         |  36% (unnamed-chunk-15)
  |                                                                                                                         
  |....................................................                                                               |  45%                   
  |                                                                                                                         
  |...............................................................                                                    |  55% (unnamed-chunk-16)
  |                                                                                                                         
  |.........................................................................                                          |  64%                   
  |                                                                                                                         
  |....................................................................................                               |  73% (unnamed-chunk-17)
  |                                                                                                                         
  |..............................................................................................                     |  82%                   
  |                                                                                                                         
  |.........................................................................................................          |  91% (unnamed-chunk-18)
  |                                                                                                                         
  |...................................................................................................................| 100%                   
## output file: 1. Class.md
## [1] "1. Class.md"
#Install a package R6 name
install.packages("R6")
## Error in install.packages : Updating loaded packages
library(R6)
#Defining a class

Person <- R6Class(
  classname = "Person",
  public = list(
    name = NULL,
    age = NULL,
    desire = NULL,
    
    initialize = function(name = NA, age = NA, desire=NA){
      self$name <- name
      self$age <- age
      self$desire <- desire
      
      self$say_hello()
    },
    
    set_age = function(val){
      self$age <- val
      cat("Age of ", self$naem, " is: ", val, ".\n", sep = "")
    }, 
    
    set_desire = function(val){
      self$desire <- val
      cat("Desire of ", self$name, "is: ", val, ".\n", sep = "")
    }, 
    
    say_hello = function(){
      cat(paste0("Hello, my name is ", self$name, ".\n", "age of ", self$age, ".\n", "desire of ", self$desire, ".\n"))
    }
  )
)
#Inititalizing objects

ho_duc_duy <- Person$new(
  name = "Ho Duc Duy",
  age = "38",
  desire = "Gap in knowledge"
)
## Hello, my name is Ho Duc Duy.
## age of 38.
## desire of Gap in knowledge.
#Getting and setting attributes
ho_duc_duy$set_age(38)
## Age of  is: 38.
ho_duc_duy$age
## [1] 38
ho_duc_duy$age <- 39
ho_duc_duy$age
## [1] 39
hdd <- ho_duc_duy$clone()
hdd$age
## [1] 39
hdd$say_hello()
## Hello, my name is Ho Duc Duy.
## age of 39.
## desire of Gap in knowledge.