2
Я знаю, что '=' не может быть непосредственно перегружен в Perl, но я хочу иметь возможность использовать '=' для вызова конструктора копирования для одного из моих объектов.Как я могу сделать '=' вызов конструктора копирования в Perl?
пример:
my $object1 = Object->new('value' => 1);
# I want this to invoke the copy constructor of "$object1" instead of copying a reference
my $object2 = $object1;
# This should not modify "$object1"
$object2->set_value(12);
print $object1->get_value()."\n";
print $object2->get_value()."\n";
Я хочу выход быть:
1
12
Как я могу сделать эту работу?
Perl не имеет конструкторов, копировать или иным образом. Конвенция заключается в создании метода под названием «клон». // Вы можете использовать [this] (http://search.cpan.org/perldoc?overload#Copy_Constructor) для копирования по-записи, если ваш объект неизменен, за исключением перегруженных операторов. Но это не так. – ikegami
Я думаю, что могу сделать свой объект неизменным, кроме перегруженных операторов. Похоже, что это самый элегантный подход. – tjwrona1992
Обработайте Perl как Perl, а не C++. Если вы попытаетесь каким-то образом применить семантику, которую вы использовали с другими языками, у вас никогда не будет счастливых отношений с языком. –