Zet het uit

Objectgeoriënteerd programmeren met S3 en R6 in R

Richie Cotton

Data Evangelist at DataCamp

ch5_3-Shut-it-down.003.png

Objectgeoriënteerd programmeren met S3 en R6 in R

ch5_3-Shut-it-down.004.png

Objectgeoriënteerd programmeren met S3 en R6 in R

 

 

 

initialize() past de opstart aan

finalize() past de opschoning aan

Objectgeoriënteerd programmeren met S3 en R6 in R
thing_factory <- R6Class(
  "Thing",
  private = list(
    ..a_field = 123
  ),
  public = list(

initialize = function(a_field) { if(!missing(a_field)) { private$a_field = a_field } },
finalize = function() { message("Finalizing the Thing") }
) )
Objectgeoriënteerd programmeren met S3 en R6 in R

 

a_thing <- thing_factory$new()
rm(a_thing)
gc()
Finalizing the Thing
         used (Mb) gc trigger (Mb) max used (Mb)
Ncells 443079 23.7     750400 40.1   592000 31.7
Vcells 718499  5.5    1308461 10.0  1092342  8.4
Objectgeoriënteerd programmeren met S3 en R6 in R
library(RSQLite)
database_manager_factory <- R6Class(
  "DatabaseManager",
  private = list(

conn = NULL
), public = list(
initialize = function(a_field) { private$conn <- dbConnect("some-database.sqlite") },
finalize = function() { dbDisconnect(private$conn) }
) )
Objectgeoriënteerd programmeren met S3 en R6 in R

Samenvatting

  • finalize() ruimt op na R6-objecten
  • Handig bij werken met databases
  • Wordt aangeroepen tijdens garbage collection
Objectgeoriënteerd programmeren met S3 en R6 in R

Laten we oefenen!

Objectgeoriënteerd programmeren met S3 en R6 in R

Preparing Video For Download...