Stäng ned

Objektorienterad programmering med S3 och R6 i R

Richie Cotton

Data Evangelist at DataCamp

ch5_3-Shut-it-down.003.png

Objektorienterad programmering med S3 och R6 i R

ch5_3-Shut-it-down.004.png

Objektorienterad programmering med S3 och R6 i R

 

 

 

initialize() anpassar uppstart

finalize() anpassar nedstängning

Objektorienterad programmering med S3 och R6 i 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") }
) )
Objektorienterad programmering med S3 och R6 i 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
Objektorienterad programmering med S3 och R6 i 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) }
) )
Objektorienterad programmering med S3 och R6 i R

Sammanfattning

  • finalize() städar upp efter R6-objekt
  • Användbart när du arbetar med databaser
  • Anropas vid skräpinsamling
Objektorienterad programmering med S3 och R6 i R

Nu kör vi en övning!

Objektorienterad programmering med S3 och R6 i R

Preparing Video For Download...