開始使用免費開始

把門關上

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
    },
    ___ = ___
    
    
  )
)
編輯並執行程式碼