Tôi đang viết một mô-đun cho một đối tượng con nai sừng tấm. Tôi muốn cho phép người dùng sử dụng đối tượng này (hoặc bản thân mình ...) thêm một số trường khi đang di chuyển như mong muốn. Tôi không thể định nghĩa các trường này là một ưu tiên vì tôi chỉ đơn giản là không biết chúng sẽ là gì.Tôi có thể linh hoạt thêm dữ liệu vào các đối tượng Moose như thế nào?
Tôi hiện chỉ đơn giản là thêm vào một trường duy nhất gọi là thêm loại hashref đó là được thiết lập để rw
, vì vậy người dùng có thể dễ dàng đưa công cụ trong băm rằng:
# $obj is a ref to my Moose object
$obj->extra()->{new_thingie}="abc123"; # adds some arbitrary stuff to the object
say $obj->extra()->{new_thingie};
này hoạt động. Nhưng ... đây có phải là một thực tế phổ biến? Bất kỳ ý tưởng nào khác (có thể thanh lịch hơn)?
Lưu ý Tôi không muốn tạo mô-đun khác để mở rộng mô-đun này, điều này thực sự chỉ dành cho nội dung trực tuyến mà tôi muốn thêm.
+1 Điều đó thực sự tuyệt vời! –
Tôi có thể làm cho trình thu thập thông tin truy cập nếu tôi cố gắng đọc (không được đặt) một trường không tồn tại không? –
Bạn có thể bọc trình truy cập 'custom_field' bằng công cụ sửa đổi xung quanh, kiểm tra arg và thu gọn nếu 'has_custom_field' trả về false. – phaylon