我正在爲一個駝鹿對象編寫一個模塊。我想允許使用這個對象的用戶(或我自己)根據他/她的需要隨時添加一些字段。我不能先定義這些領域,因爲我根本不知道他們會是什麼。如何靈活地將數據添加到Moose對象?
我現在只是添加了名爲額外的類型hashref這是被設定爲rw
單場,這樣用戶就可以簡單地把東西在哈希:
# $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};
這工作。但是...這是一種常見的做法嗎?任何其他(可能更優雅)的想法?
注意我不想創建另一個模塊來擴展這個模塊,這真的只是我想要添加的即時模塊。
+1這真的很酷! – 2010-10-22 15:33:33
如果我嘗試閱讀(未設置)不存在的字段,是否可以使存取器發出咔嚓聲? – 2010-10-23 14:35:20
您可以使用around修飾符來包裝'custom_field'訪問器,檢查參數,並在'has_custom_field'返回false時發出呱呱聲。 – phaylon 2010-10-23 16:23:21