首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在匿名函数中调用匿名函数(Inception)

在匿名函数中调用匿名函数(Inception)
EN

Stack Overflow用户
提问于 2012-08-13 02:56:58
回答 1查看 210关注 0票数 3

简单的问题,但很难回答?我在一个类方法中有以下匿名函数:

代码语言:javascript
复制
$unnest_array = function($nested, $key) {
    $unnested = array();

    foreach ($nested as $value) {
        $unnested[] = (object) $value[$key];
    }

    return $unnested;
};

在同一个类方法中,我有这个数组,用来保存匿名函数。也就是说,我使用内联create_function()创建了一个新的匿名函数,并且我想使用已经定义的匿名函数$unnest_array()。有可能吗?

代码语言:javascript
复制
$this->_funcs = array(
    'directors' => array(
        'func'  => create_function('$directors', 'return $unnest_array($directors, "director");'),
        'args'  => array('directors')
    )
);

目前我得到的是“未定义的变量: unnest_array”。帮助?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-13 03:04:43

为什么你首先要使用create_function呢?闭包完全取代了create_function,使得它在5.3以后的所有版本中基本上都过时了。似乎您试图通过将第二个参数固定为"director"partially apply $unnest_array

除非我误解了您的意思,否则您应该能够通过使用闭包/匿名函数(未经测试)来实现相同的结果:

代码语言:javascript
复制
$this->_funcs = array(
    'directors' => array(
        'func'  => function($directors) use ($unnest_array)
            {
                return $unnest_array($directors, "director");
            },
        'args'  => array('directors')
    )
);

use ($unnest_array)子句是访问闭包父作用域中的局部变量所必需的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11924916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档