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