シャットダウン

R における S3 と R6 を使ったオブジェクト指向プログラミング

Richie Cotton

Data Evangelist at DataCamp

ch5_3-Shut-it-down.003.png

R における S3 と R6 を使ったオブジェクト指向プログラミング

ch5_3-Shut-it-down.004.png

R における S3 と R6 を使ったオブジェクト指向プログラミング

 

 

 

initialize()起動時の処理を定義

finalize()後片付けを定義

R における S3 と R6 を使ったオブジェクト指向プログラミング
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") }
) )
R における S3 と R6 を使ったオブジェクト指向プログラミング

 

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
R における S3 と R6 を使ったオブジェクト指向プログラミング
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) }
) )
R における S3 と R6 を使ったオブジェクト指向プログラミング

まとめ

  • finalize()R6 オブジェクトの後処理を行います
  • データベース操作で有用です
  • ガベージコレクション時に呼ばれます
R における S3 と R6 を使ったオブジェクト指向プログラミング

Passons à la pratique !

R における S3 と R6 を使ったオブジェクト指向プログラミング

Preparing Video For Download...