【问题标题】:What is the use of creating functions within functions?在函数中创建函数有什么用?
【发布时间】:2010-02-16 05:35:21
【问题描述】:

我知道可以在另一个函数中创建一个函数。为什么在现实生活中需要这样做? (PHP)

function someFunction($var)  
{  
    function anotherFunction()
    {
        return M_PI;
    }

    return anotherFunction();
}

【问题讨论】:

标签: php function methods


【解决方案1】:

您真正想要在另一个函数内部定义一个函数的唯一情况是,如果在调用外部函数之前,您不希望该内部函数可用于任何东西。

function load_my_library() {
  ...

  function unload_my_library() {
  }
}

您需要(或希望)unload_my_library 可用的唯一时间是在加载库之后。

【讨论】:

  • +1 我认为这是有条件地创建函数的逻辑扩展,即if (...) { function foo() { ... } }。将它嵌套在另一个函数中而不是 if 可能会派上用场,以用于代码组织目的。 “条件函数”在某些情况下很方便,最常用的方法之一是将必要的函数改装到旧的 PHP 版本中。
【解决方案2】:

通常不应该使用嵌套函数。类和公共/私有方法更干净地解决了相同类型的问题。

但是,函数生成函数可能很有用:

<?php
# requires php 5.3+
function make_adder($a)
{
  return function($b) use($a) {
    return $a + $b;
  };
}

$plus_one = make_adder(1);
$plus_fortytwo = make_adder(42);

echo $plus_one(3)."\n";       // 4
echo $plus_fortytwo(10)."\n"; // 52

?>

这个例子是做作的和愚蠢的,但是这种东西对于生成排序例程等使用的函数很有用。

【讨论】:

    【解决方案3】:

    我在这里猜测,但我相信它是用于将函数传递给另一个函数以执行。例如,调用搜索函数,您可以在其中指定回调函数来执行搜索顺序比较。这将允许您将比较器封装在您的外部函数中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多