问题标签 [first-class-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
3370 浏览

c# - 在 OOP 中覆盖方法与分配方法委托/事件

这是一个奇怪的 oop 问题。我想创建一组对象(在设计时已知),每个对象都有与之关联的某些功能。我可以通过提供可以包含“委托”的对象属性来做到这一点:

或者,我可以使用一个抽象类并为我要创建的每个对象实现它:

我意识到这两种方法的实际后果(在设计时创建与运行时创建)是完全不同的。

如何选择适合我的应用的方法?

0 投票
2 回答
1032 浏览

actionscript-3 - Actionscript:ExternalInterface.addCallback() 究竟是如何工作的?

我对 ActionScript 很陌生,但对面向对象或一般的过程语言都不是新手。但是,ActionScript 对这两个类别的功能的特殊组合让我感到困惑。

具体来说,我对ExternalInterface.addCallback()的机制感到困惑。方法签名是:

特别感兴趣的是闭包参数,它具有以下文档:

closure:Function — 要调用的函数闭包。这可能是一个独立的函数,也可能是一个引用对象实例方法的方法闭包。通过传递方法闭包,您可以将回调指向特定对象实例的方法。

我认为上面的意思是闭包只是一个函数(不是方法),它可能是也可能不是包含来自实例化对象的方法调用的闭包。所以当我看到这样的代码(取自同一个文档页面)时,我会感到困惑:

上面的代码插入了 to addCallback,一个非静态方法,ext_test没有将它包装在一个包含实例化ex_test对象的闭包中。

该方法包含一些琐碎的代码,但如果它有包含成员变量等的语句怎么办?当没有父对象时如何评估该方法?

此外,(因为addCallback似乎允许传递任意方法)文档没有提及访问修饰符对传递的方法(如果有)的影响。如果我将方法标记为私有,我仍然可以将它传递给 addCallback 吗?这是怎么回事?

如果有人能帮我解决这个问题,我将不胜感激。

0 投票
4 回答
214 浏览

java - 一流的功能

所以我们有一个名为 Func.java 的接口,它看起来像这样:

然后我们有一个名为 mainClass.java 的主类,它看起来像这样:

我不太确定如何在 main 方法中调用这个 compose 方法,以及这段代码是如何编译的!我的意思是,这里是否需要 Java 泛型才能使其正常工作?

0 投票
2 回答
209 浏览

javascript - 在 JavaScript 中调用闭包时,输入闭包代码时是否会创建新的执行上下文?

注意下面的闭包示例:

调用虚拟变量绑定(将执行“bar”函数代码)时,是否创建了新的执行上下文?ECMAScript 规范指定了输入函数代码时会发生什么,但由于这是对函数/闭包的引用,我不确定它是否必须再次经历整个执行上下文创建/绑定阶段。

0 投票
4 回答
223 浏览

methods - 使用函数名作为参数

在 Go 中,您可以将函数作为参数传递,例如callFunction(fn func). 例如:

但是当它是结构的成员时可以调用函数吗?以下代码将失败,但为您提供了我正在谈论的示例:

(我知道我在那个例子中试图做的有点奇怪。我遇到的确切问题并没有很好地缩小到一个简单的例子,但这是我问题的本质。但是我也很感兴趣这是从学术角度来看的)

0 投票
3 回答
113 浏览

c# - 中断传递给 LINQ 函数的函数

我有一个传递给Select. 但是当我在所述函数中设置断点时,程序不会中断。

例子:

0 投票
1 回答
267 浏览

java - 作为参数传递的对象的延迟初始化

假设我有一个方法需要很长时间才能创建一个对象,

我还有一个可以序列化和反序列化对象的辅助类,

我想要一个函数,它首先尝试加载由 指定的序列化对象filename,但如果失败,则创建该对象default。它可能看起来像这样:

conditionalCreate现在编写函数的方式default将始终被创建——我只想在default必要时创建对象。

在另一种语言中,该conditionalCreate函数可能如下所示:

此外,如果需要构造对象(如果反序列化失败),我想要一种将参数传递给此默认构造函数的方法。

在 Java 7 中这样的事情可能吗?

0 投票
2 回答
10124 浏览

powershell - 在 PowerShell 中将函数(带参数)作为参数传递

我已经使用 ScriptBlocks 在 PowerShell 中成功地传递了无参数函数。但是,如果函数有参数,我无法让它工作。有没有办法在 PowerShell 中做到这一点?(最好是 v2)

然后

将 0 写入控制台。Apply 确实调用Add,但不传递任何参数(即使用默认的 [int] 值 0 和 0)

0 投票
1 回答
80 浏览

scala - 将类型上的方法转换为类型的函数

是否可以将 T 类型的方法转换为 T 类型的函数?例如,如果我有

可以以某种方式将 foo 作为参数 somef 传递给

到目前为止,我已经把它从这样的类型中拉出来了:

但这并不是太干,甚至可以说是湿的。

0 投票
2 回答
149 浏览

scala - 我在 Scala 列表中添加了一个函数,现在如何删除它?

给定以下 Scala 代码:

我在缓冲区中添加了两个函数。现在,我如何删除一个?

buffer -= foo不起作用,因为 foo 在任何比较之前被评估为布尔值。