2010-12-21 52 views
0

我想在構造函數中傳遞名爲「A」的類對象的引用。並使用「驗證」功能來檢查它。Perl:「validate」函數中類對象應該使用什麼類型

這樣的:

test1.pm

my $object = Object1->new; 

my $newObject = Object2->new({ 
    param1 => $object, 
}); 

test2.pm

sub new { 
    my $class = shift; 

    my (%options) = validate (@_, { 
     param1 => { type => SCALARREF, default => undef}, 
    }); 
    ... 
} 

,我是不知道的參數參數1的類型的問題。我嘗試了「OBJECT」和「SCALARREF」,但是出現了像「SCALARREF不允許同時嚴格分」的錯誤。

我應該使用什麼類型?

回答

2

看起來你正試圖在這裏做一個準 - Moose的事情。但在穆斯,你不會創建new潛艇,因爲Moose爲你做。如果你需要任何東西 - 你創建一個BUILD子。

Perl(5)的基礎對象系統不像Moose那樣工作,所以'SCALARREF'或者其他什麼都是你在基本Perl中做的。

  • 你是否意識到你正在傳遞一個hashref到new
  • 您是否意識到vaildate正在獲取兩個hashrefs?
    validate({}, {})

如果SCALARREF尚未確定,這將永遠是一個裸字。

請閱讀Moose。您可以從Moose Types Manual開始,瞭解如何使用ScalarRef,但由於您甚至沒有顯示「use Moose」,因此您應該從Manual的第1頁開始。

+0

我剛剛排序。我應該使用「使用Params :: Validate qw(:all);」並使用「對象類型」。現在它工作正常) – Nikita 2010-12-21 14:29:43

相關問題