Đọc chỉ số công suất
Dữ liệu do một đối tượng R6 lưu trữ được cố ý ẩn khỏi người dùng bằng cách đặt trong phần tử private. Đây là nguyên tắc đóng gói (encapsulation).
Nếu bạn muốn cung cấp quyền truy cập vào bất kỳ giá trị dữ liệu nào, bạn có thể dùng active binding. Đây là các hàm hoạt động như biến.
Active binding được lưu trong phần tử active của một đối tượng R6. Để tạo một active binding nhằm lấy một trường dữ liệu private (tức là binding "chỉ đọc"), bạn tạo một hàm không có đối số và chỉ đơn giản trả về phần tử private đó.
Mẫu để tạo một active binding chỉ đọc như sau:
thing_factory <- R6Class(
"Thing",
private = list(
..a_field = "a value"
),
active = list(
a_field = function() {
private$..a_field
}
)
)
Active binding được gọi như một biến dữ liệu, không phải như một hàm.
a_thing <- thing_factory$new()
a_thing$a_field # không phải a_thing$a_field()
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 factory cho lò vi sóng đã được định nghĩa một phần cho bạn.
- Cập nhật định nghĩa để bao gồm một active binding chỉ đọc nhằm lấy chỉ số công suất.
- Active binding này nên được đặt tên là
power_rating_watts. - Nó được định nghĩa là một hàm, không có đối số.
- Phần thân chỉ cần trả về trường private
..power_rating_watts.
- Active binding này nên được đặt tên là
- Tạo một đối tượng lò vi sóng và gán vào
a_microwave_oven. - Đọc chỉ số công suất của nó.
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 binding for power rating
microwave_oven_factory <- R6Class(
"MicrowaveOven",
private = list(
..power_rating_watts = 800
),
active = list(
# Add the binding here
___ = ___
)
)
# Make a microwave
a_microwave_oven <- ___
# Get the power rating
___