$a = 1;
$b = 2;
function test(){
$b = 20;
function Sum()
{
$b = $GLOBALS['a'] + $b;
}
}
test();
Sum();
echo $b;
现在我希望函数Sum()访问函数test()中声明的$b变量;
你好吗?
解决方法:
野生猜测模式:
你的函数Sum()将“正常”取两个参数/操作数
function Sum($a, $b) {
return $a+$b;
}
echo Sum(1, 20);
现在你有了函数test(),你希望它返回一个只接受一个参数的函数fn,然后用一个“预定义”参数调用Sum($a,$b),然后传递给fn.
这称为currying或部分应用程序(取决于你究竟实现了什么),你可以用lambda functions/closures这样做,因为PHP 5.3
<?PHP
function Sum($a, $b) {
return $a + $b;
}
function foo($a) {
return function($b) use ($a) {
return Sum($a, $b);
};
}
$fn = foo(1) // -> Sum(1, $b);
$fn = foo(2) // -> Sum(2, $b);
echo $fn(47);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。