Học nấu ăn
Đối số thứ ba của R6Class() là public và chứa các chức năng hướng tới người dùng của đối tượng. Đối số này phải là một list, với tên cho từng phần tử của nó.
Phần public của một lớp R6 chứa các chức năng sẵn có cho người dùng. Thông thường nó chỉ bao gồm các hàm.
Mẫu cập nhật để tạo một bộ sinh lớp (class generator) R6 như sau:
thing_factory <- R6Class(
"Thing",
private = list(
a_field = "a value",
another_field = 123
),
public = list(
do_something = function(x, y, z) {
# Do something here
}
)
)
Bài tập này là một phần của khóa học
Lập trình hướng đối tượng với S3 và R6 trong R
Hướng dẫn bài tập
Một xưởng (factory) tạo lò vi sóng đã được định nghĩa một phần cho bạn.
- Cập nhật phần
publiccủa định nghĩa để bao gồm một phương thứccook.- Phương thức
cooklà một hàm. - Nó cần có một đối số tên là
time_secondsđể biểu thị thời gian nấu. - Trong phần thân của phương thức
cook, bạn nên truyềntime_secondsvàoSys.sleep()(docs), hàm này sẽ không làm gì trong khoảng thời gian đã chỉ định. - Cuối cùng, phương thức
cooknênprint()(docs) chuỗi"Your food is cooked!"
- Phương thức
- Tạo một đối tượng lò vi sóng tên là
a_microwave_ovenbằng phương thứcnew()củamicrowave_oven_factory. - Gọi phương thức
cook()củaa_microwave_oventrong 1 giây.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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
___