首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xtend中的回调函数

xtend中的回调函数
EN

Stack Overflow用户
提问于 2013-07-12 11:42:52
回答 2查看 355关注 0票数 1

如何在xtend中调用回调函数?

我正在寻找与C中类似的内容。示例:

代码语言:javascript
复制
    struct callbacks
    {
      char name[10];
      boolean (*pfState)();
    };

    static const struct callbacks call[] = {
      {"YOURS", &isOwner},
      {"OURS", &our_owner}
    };

因此,我将这样命名它:call[0].pfState()

我在xtend中创建了一个类似的ArrayList。

代码语言:javascript
复制
    val you = new youModule()
    val our = new ourModule()
    val callbacks = newArrayList('YOURS' -> you.isOwner, 'OURS' -> our.isOwnder);

我这样做正确吗?如何执行对中的函数调用?

EN

回答 2

Stack Overflow用户

发布于 2013-07-12 17:15:15

当前您创建了一个将字符串映射到方法调用结果的对列表,例如,假设#isOwner返回一个boolean,那么您的列表回调当前就是一个List<Pair<String, Boolean>>

相反,您必须将#isOwner的调用包装在一个λ表达式中:

代码语言:javascript
复制
val callbacks = newArrayList(
  'YOURS' -> [| you.isOwner ],
  'OURS' -> [| our.isOwnder ]
);

现在,回调的类型是List<Pair<String, ()=>boolean>>,或者换句话说:List<Pair<String, Functions.Function0<Boolean>>>

票数 0
EN

Stack Overflow用户

发布于 2014-11-13 02:15:50

如果在变量中存储了“回调”,则需要通过在该函数上调用apply来调用该函数。

下面是一个简单的示例,它显示了一个哈希图,其中包含两个存储在'YOURS‘和'OURS’键下的回调函数。当被调用时,每个回调函数打印不同的消息并返回一个布尔值。

代码语言:javascript
复制
    val callbacks = newHashMap(
      'YOURS' -> [| println("calling the first callback");  true  ],
      'OURS'  -> [| println("calling the second callback"); false ]
    )

    val result = callbacks.get("YOURS").apply

// result is: true
// console output is: calling the first callback
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17607140

复制
相关文章

相似问题

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