[Moscow.pm] Feature discussion: lvalue
Vladimir V. Perepelitsa
inthrax на gmail.com
Сб Апр 5 10:07:01 PDT 2008
On Saturday 05 April 2008 20:11:46 Dmitry Karasik wrote:
> Hi Vladimir!
>
> On 05 ÁÐÒ 08 at 09:25, "Vladimir" (Vladimir V Perepelitsa) wrote:
>
> Vladimir> õ ÍÅÎÑ ÔÕÔ ×ÏÚÎÉËÌÁ ÍÙÓÌØ: ËÁË ÍÏÖÎÏ ÂÙÌÏ-ÂÙ ÒÅÁÌÉÚÏ×ÁÔØ lvalue,
> Vladimir> ...
> Vladimir> ÁÒÇÕÍÅÎÔÁÍÉ. ô.Å. ÐÒÉ accessor() = 10; ×ÙÚÙ×ÁÅÔÓÑ ANON->(10);
>
> ÷ ÌÏÂ ÎÅ ÐÏÌÕÞÉÔÓÑ Ô.Ë. ÐÁÒÓÅÒ ÓËÁÖÅÔ "Can't modify reference constructor
> in lvalue subroutine return". üÔÏ ÍÏÖÎÏ ÏÂÏÊÔÉ ÅÓÌÉ ×ÍÅÓÔÏ ANON ×ÏÚ×ÒÁÝÁÔØ
> ÏÂßÅËÔ ÐÒÉ×ÑÚÁÎÎÙÊ Ë ANON, Õ ËÏÔÏÒÏÇÏ ÐÅÒÅÇÒÕÖÅÎ ÏÐÅÒÁÔÏÒ ÐÒÉÓ×ÁÉ×ÁÎÉÑ,
> ÐÒÉÍÅÒÎÏ ÔÁË:
>
> sub TIESCALAR { bless $_[1], __PACKAGE__ }
> sub FETCH { ${ $_[0]-> () } }
> sub STORE { ${ $_[0]-> () } = $_[1] }
>
> my $var;
> sub accessor : lvalue {
> my $t;
> tie $t, __PACKAGE__, sub { \$var };
> $t;
> }
> accessor = 42;
> warn $var;
про tie я знаю.
но как известно, tie медленный.
хотелось-бы все-таки значительно большей скорости, сравнимой как-раз с вызовом
дополнительной sub'ы.
--
Vladimir Perepelitsa aka Mons Anderson
<inthrax на gmail.com> / #99779956
Подробная информация о списке рассылки Moscow-pm