Mercurial > pub > Impl
comparison Lib/IMPL/Code/Binding.pm @ 226:b6cde007a175
Added resource contract
author | sergey |
---|---|
date | Wed, 05 Sep 2012 15:10:26 +0400 |
parents | a1e868b0fba9 |
children | 6d8092d8ce1b |
comparison
equal
deleted
inserted
replaced
225:a1e868b0fba9 | 226:b6cde007a175 |
---|---|
23 sub { | 23 sub { |
24 my ($varnames) = \@_; | 24 my ($varnames) = \@_; |
25 $text | 25 $text |
26 } | 26 } |
27 CODE | 27 CODE |
28 my $body = eval $code; #$compiler_env->reval($code,'strict'); | 28 my $method = eval $code; #$compiler_env->reval($code,'strict'); |
29 | 29 |
30 | 30 return $method; |
31 } | 31 } |
32 | 32 |
33 1; | 33 1; |
34 | 34 |
35 __END__ | 35 __END__ |
36 | 36 |
37 =pod | 37 =pod |
38 | 38 |
39 =head1 NAME | 39 =head1 NAME |
40 | 40 |
41 C<IMPL::Code::Binding> - превращает выражения в связыватель | 41 C<IMPL::Code::Binding> - превращает выражения в процедуру. |
42 | 42 |
43 =head1 SYNOPSIS | 43 =head1 SYNOPSIS |
44 | 44 |
45 =begin code | 45 =begin code |
46 | 46 |
49 } | 49 } |
50 | 50 |
51 my $person = DB->SearchPerson({name => 'Peter'})->First; | 51 my $person = DB->SearchPerson({name => 'Peter'})->First; |
52 | 52 |
53 my $bind = Binding->new( | 53 my $bind = Binding->new( |
54 [qw(obj)] => q{ $obj->addresses->[0]->country->code } | 54 [qw(obj)] => |
55 q{ $obj->addresses->[0]->country->code } | |
55 ); | 56 ); |
56 | 57 |
57 print $bind->($person); | 58 print $bind->($person); |
58 | 59 |
59 =end | 60 =end |
63 Позвоялет преобразовать выражение в функцию, которую можно будет многократно | 64 Позвоялет преобразовать выражение в функцию, которую можно будет многократно |
64 использовать для получения значения выражения. | 65 использовать для получения значения выражения. |
65 | 66 |
66 Выражение параметризуется произвольным количеством именованных параметров, | 67 Выражение параметризуется произвольным количеством именованных параметров, |
67 которые будут доступны внутри выражения как переменные. При создании связывателя | 68 которые будут доступны внутри выражения как переменные. При создании связывателя |
68 в конструктор передается выражение связывания, ссылка насписок из параметров | 69 в конструктор передается выражение связывания, ссылка насписок из параметров. |
69 и могут быть переданы связи для копозиции. | |
70 | 70 |
71 При создания связывателя будет проверен синтаксис, и если в выражении допущена | 71 При создания связывателя будет проверен синтаксис, и если в выражении допущена |
72 ошибка, возникнет исключение. | 72 ошибка, возникнет исключение. |
73 | 73 |
74 Данный класс не является безопасным при создании связывателей из ненадежных | 74 Данный класс не является безопасным при создании связывателей из ненадежных |
75 источников, поскольку внутри будет выполнен C<eval>. | 75 источников, поскольку внутри будет выполнен C<eval>. |
76 | 76 |
77 =head1 MEMBERS | 77 =head1 MEMBERS |
78 | 78 |
79 =head2 C<new($expression,\@vars,\%bindings)> | 79 =head2 C<new(\@vars,$expression)> |
80 | 80 |
81 Возвращает ссылку на процедуру. | 81 Возвращает ссылку на процедуру. |
82 | 82 |
83 =cut | 83 =cut |