開始使用免費開始

學做菜

傳給 R6Class() 的第三個引數名為 public,用來放物件對使用者開放的功能。這個引數應該是一個清單,每個元素都要有名稱。

R6 類別中的 public 元素包含使用者可用的功能。通常只會包含函式。

建立 R6 類別產生器的更新範式如下:

thing_factory <- R6Class(
  "Thing",
  private = list(
    a_field = "a value",
    another_field = 123
  ),
  public = list(
    do_something = function(x, y, z) {
      # Do something here
    }
  )
)

本練習屬於課程

在 R 中使用 S3 與 R6 的物件導向程式設計

檢視課程

練習說明

我們已經替你部分定義了一個微波爐工廠。

  • 更新定義裡的 public 元素,加入一個 cook 方法。
    • cook 方法是一個函式。
    • 它應該有一個名為 time_seconds 的引數,用來表示加熱時間。
    • cook 方法的本體中,將 time_seconds 傳給 Sys.sleep()文件),這個函式會在指定時間內不做任何事。
    • 最後,cook 方法應該 print()文件)字串 "Your food is cooked!"
  • 使用 microwave_oven_factorynew() 方法,建立一個名為 a_microwave_oven 的微波爐物件。
  • 呼叫 a_microwave_ovencook() 方法,時間設為 1 秒。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Add a cook method to the factory definition
microwave_oven_factory <- R6Class(
  "MicrowaveOven",
  private = list(
    power_rating_watts = 800
  ),
  public = list(
    ___ = ___(___) {
      ___
      ___
    }
  )
)

# Create microwave oven object
a_microwave_oven <- ___

# Call cook method for 1 second
___
編輯並執行程式碼