[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