始める無料で始める

ドアを閉める

R6 オブジェクトのメソッドは、private$ という接頭辞を使ってプライベートフィールドにアクセスできます。

thing_factory <- R6Class(
  "Thing",
  private = list(
    a_field = "a value",
    another_field = 123
  ),
  public = list(
    do_something = function(x, y, z) {
      # Access the private fields
      paste(
        private$a_field, 
        private$another_field
      )
    }
  )
)

この演習はコースの一部です

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

コースを見る

演習の手順

電子レンジのファクトリーが一部定義されています。プライベートフィールド door_is_open と、パブリックメソッド open_door が追加されています。

  • 電子レンジのドアを閉めるパブリックメソッド close_door() を追加してください。
    • このメソッドは引数を取りません。
    • 関数本体で、door_is_open フィールドを FALSE に設定してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Add a close_door() method
microwave_oven_factory <- R6Class(
  "MicrowaveOven",
  private = list(
    power_rating_watts = 800,
    door_is_open = FALSE
  ),
  public = list(
    cook = function(time_seconds) {
      Sys.sleep(time_seconds)
      print("Your food is cooked!")
    },
    open_door = function() {
      private$door_is_open <- TRUE
    },
    ___ = ___
    
    
  )
)
コードを編集して実行