我正在一個更大的專案中在 Perl Moose 中實作一個類。我遇到的問題如下:
假設我有一個名為GetValue()回傳 HashRef 的類方法和一個名為 HashRef 的屬性Value。
這就是我想要做的:
sub GetValue
{
#do something
return \%something;
}
has Value => (
is=>'ro',
isa => 'HashRef',
reader => "Value",
builder => '_Value_builder',
);
sub _Value_builder
{
my $self = shift;
return $self->GetValue();
}
這似乎不起作用,因為我在一個非常大的專案中出現的錯誤只是一個很長的堆疊跟蹤,我認為它不包含太多資訊。
在實際情況下,函式 GetValue 是一個 TCP 呼叫,也是一個服務器,套接字是類屬性的一部分。據我了解,問題似乎是對 GetValue 的呼叫發生在構建器創建套接字之前,但我不確定。
這種語法可以作業嗎?如果 TCP 通信是問題,是否有解決方法?
uj5u.com熱心網友回復:
正如評論中已經討論的那樣,將屬性宣告為惰性已解決了該問題:
sub GetValue
{
#do something
return \%something;
}
has Value => (
is=>'ro',
isa => 'HashRef',
reader => "Value",
lazy => 1,
builder => '_Value_builder',
);
sub _Value_builder
{
my $self = shift;
return $self->GetValue();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533317.html
標籤:perl驼鹿
