如何引用另一个外部函数的参数?
How do I refer to another outer function's argument?
我有这个代码:
for_each($products, sub {
div({-class => 'product'},
only_if(is_admin(), sub {
a({-href => 'remove_product.cgi?id='.$_[0]->{'product_id'}}, 'Bla bla bla')
}),
img({
-src => $_[0]->{'picture'},
-alt => $_[0]->{'description'}
}),
...
这只是相关的部分。 only_if
是一个函数,它接受一个布尔值和另一个函数,只有当布尔值是 true
时才执行该函数;但这无关紧要。
问题在于,在 $_[0]->{'product_id'}
中,它试图获取传递给 only_if
的函数的第一个参数,而不是 "main" 函数(最外层)。
什么是引用外部函数参数的最简洁的方法?
我试过:
for_each($products, sub {
div({-class => 'product'},
my $curr = $_[0],
only_if(is_admin(), sub {
a({-href => 'remove_product.cgi?id='.$curr->{'product_id'}}, 'Rimuovi prodotto')
}),
img({
-src => $_[0]->{'picture'},
-alt => $_[0]->{'description'}
}),
但显然:
Global symbol "$curr" requires explicit package name
(在线 $curr->{'product_id'}
)。
在你的代码中 $curr
在 div()
调用(第二个参数)之后可见,所以很明显你想在它之前声明它,
for_each($products, sub {
my $curr = $_[0];
div({-class => 'product'}, ...
我有这个代码:
for_each($products, sub {
div({-class => 'product'},
only_if(is_admin(), sub {
a({-href => 'remove_product.cgi?id='.$_[0]->{'product_id'}}, 'Bla bla bla')
}),
img({
-src => $_[0]->{'picture'},
-alt => $_[0]->{'description'}
}),
...
这只是相关的部分。 only_if
是一个函数,它接受一个布尔值和另一个函数,只有当布尔值是 true
时才执行该函数;但这无关紧要。
问题在于,在 $_[0]->{'product_id'}
中,它试图获取传递给 only_if
的函数的第一个参数,而不是 "main" 函数(最外层)。
什么是引用外部函数参数的最简洁的方法?
我试过:
for_each($products, sub {
div({-class => 'product'},
my $curr = $_[0],
only_if(is_admin(), sub {
a({-href => 'remove_product.cgi?id='.$curr->{'product_id'}}, 'Rimuovi prodotto')
}),
img({
-src => $_[0]->{'picture'},
-alt => $_[0]->{'description'}
}),
但显然:
Global symbol "$curr" requires explicit package name
(在线 $curr->{'product_id'}
)。
在你的代码中 $curr
在 div()
调用(第二个参数)之后可见,所以很明显你想在它之前声明它,
for_each($products, sub {
my $curr = $_[0];
div({-class => 'product'}, ...