为了账号安全,请及时绑定邮箱和手机立即绑定

c语言和java如何实现闭包?

c语言和java如何实现闭包?

呼唤远方 2019-03-20 18:14:23
js go python 实现闭包貌似很简单
查看完整描述

6 回答

?
www说

TA贡献1775条经验 获得超8个赞

现代的Java已经支持闭包了。

标准的C不支持闭包。gcc和clang倒是有blocks扩展。


查看完整回答
反对 回复 2019-04-15
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

C语言实现闭包函数,可以参考《C语言接口与实现》一书,作者多次使用闭包,不过作者说的闭包应该指的是回调函数。和Java估计不大相同。比如下面的这个函数Table_map,其中的回调函数apply,可以在C中称为一个闭包。注:以上是作者的书中,中译本的说法~


void Table_map(T table,

    void apply(const void *key, void **value, void *cl),

    void *cl) {

    int i;

    unsigned stamp;

    struct binding *p;

    assert(table);

    assert(apply);

    stamp = table->timestamp;

    for (i = 0; i < table->size; i++)

        for (p = table->buckets[i]; p; p = p->link) {

            apply(p->key, &p->value, cl);

            assert(table->timestamp == stamp);

        }

}


查看完整回答
反对 回复 2019-04-15
  • 6 回答
  • 0 关注
  • 1256 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信