【发布时间】:2016-04-06 03:47:26
【问题描述】:
我知道以前可能有人问过这个问题,但我不太了解匿名函数(闭包)的整个概念,以及它们如何具体应用于我的情况。注意:我知道拥有所有这些简单的功能很傻,但我的任务要求说我应该拥有所有这些功能:/。
我有几个功能。在下面的函数中,参数$action1和$action2都将被函数替换:
function dothis($num1, $num2, $action1, $action2)
{
$result = $num1 + $num2;
if ($result > 52){
//do $action1 which is a function
} else {
//do $action2 which is another function
}
return $result;
}
函数dothis 将在另一个名为add 的函数中调用。这是add 函数:
function add($action1,$action2)
{
$answer = dothis(42, 34, $action1, $action2);
echo $answer;
}
add 函数中的$action1 和$action2 与dothis 函数中的$action1 和$action2 基本相同。即使它们是相同的东西,它们现在还需要有不同的名称吗?
现在,add 函数将在main 函数中被调用,其中参数$action1 和$action2 将被它们对应的实际函数替换:
function main()
{
add($fun1,$fun2);
echo 'Arithmetic complete';
}
这是$fun1 和$fun2 的代码:
$fun1 = function () {
echo 'Wow! The answer is greater than 52.';
};
$fun2 = function () {
echo 'Oh no! The answer is less than 52.';
};
我应该怎么做,我需要改变什么?我真的很感激任何帮助。提前致谢!
【问题讨论】:
-
与您的问题无关,但是当您将闭包分配给变量时,您仍然需要使用
;终止您的分配。 -
@localheinz 谢谢!确实如此。我完全忘记了!
标签: php function parameters closures anonymous-function