ドアを閉める
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
},
___ = ___
)
)