[英]perl object and attribute
我試圖基於某些條件(例如,對象的版本)創建perl對象(及其相關屬性),不需要某個屬性(否則無效)。 我如何創建對象,而不必兩次指定對象(每個條件一次)。
my $obj = myobject->new (
attr1 => value1,
attr2 => value2,
attr3 => valuen,
)
例如,我可以定義一個變量並根據條件為其分配不同的值嗎? 像這樣:
my $attribute = (condition)? "":'attr4 => value4';
並像這樣簡單地定義對象:
my $obj = myobject->new (
attr1 => value1,
attr2 => value2,
attr3 => valuen,
$attribute,
)
這顯然會出錯。 但是你明白我的想法。 我該如何工作?
實際上, new
的參數只是一個列表,就像任何東西的參數一樣。 您可以使用數組而不是字符串來執行所需的操作。
my @attribute = $condition ? () : (attr4 => value4);
my $obj = MyObject->new(
attr1 => value1,
attr2 => value2,
attr3 => value3,
@attribute
);
如果順序無關緊要(通常對於構造函數而言無關緊要),您也可以使用哈希-可以使您的代碼變得更好。
我認為我的方法是構建參數的哈希,完成后將其傳遞給構造函數
看起來像這樣。 我將整個內容包裝在一個do
塊中,以限制%attr
的范圍; 這不是必需的。 當然condition
必須是可編譯的Perl表達式
my $obj = do {
my %attr = (
attr1 => 'value1',
attr2 => 'value2',
attr3 => 'valuen',
);
$attr{attr4} = 'value4' if condition;
MyObject->new(%attr);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.