[Moscow.pm] overload в наследнике

Ilya Chesnokov chesnokov.ilya на gmail.com
Ср Май 28 04:42:00 PDT 2014


28 мая 2014 г., 15:38 пользователь Андрей Фёдоров
<secrethost на gmail.com> написал:
> Передать строку
>
> use overload '""' => 'to_string';

Точно... И вообще, perldoc overload ;)

>
> 28 мая 2014 г., 15:37 пользователь Ilya Chesnokov <chesnokov.ilya на gmail.com>
> написал:
>
>> 28 мая 2014 г., 15:32 пользователь Харпалёв Иван
>> <ivan.kharpalev на gmail.com> написал:
>> > package  Parent;
>> > use overload '""' => sub \&to_string;
>> > sub to_string {...}
>> >
>> > package Heir;
>> > use base 'Parent';
>> > sub to_string;
>> >
>> > package main;
>> > print Heir->new();   #будет вызвана Parent::to_string, а не
>> > Heir::to_string
>> >
>> >
>> > Что же делать?? (чтобы в родителе определять overload, а подменяя методы
>> > в
>> > наследнике изменять поведение перегруженных операторов).
>>
>> Ну ты как бы явно даешь ссылку на функцию to_string() родительского
>> пакета.
>> Что, если сделать так:
>>
>> use overload "" => sub { $_[0]->to_string() };
>>
>> >
>> >
>> >
>> > С уважением
>> > Иван Харпалев
>> >
>> >
>> > --
>> > Moscow.pm mailing list
>> > moscow-pm на pm.org | http://moscow.pm.org
>> >
>>
>>
>>
>> --
>> Best regards,
>> Ilya Chesnokov
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Best regards,
Ilya Chesnokov


Подробная информация о списке рассылки Moscow-pm