问题标签 [function-object]

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 投票
1 回答
68 浏览

c++ - 指向 std::vector 元素的指针

我有类似的东西

此段错误。对不起,我不能让它变得更简单,这是最简单的,最接近我的实际代码,因为我可以做到。我需要指向函数对象的指针向量。我的猜测是标记的行//here我正在发送一个无效的指针,但除此之外,我仍在试图解决这个问题。

0 投票
1 回答
81 浏览

c++11 - 我应该通过复制、引用还是常量引用来接收函数?

在定义带有函数参数的函数时,我应该std::function通过复制、引用还是 const 引用来接收 lambda/?

还是三个都行?

0 投票
2 回答
369 浏览

scala - Scala Trait 和函数对象

我开始学玩了

我一直在试图了解 Action 是如何实施的。我只是不明白语言结构,这真的让我很沮丧......

没看懂怎么写?

val echo = Action { request => Ok("得到请求 [" + request + "]") }

并让它编译....那是什么样的构造?这将是一个将函数作为参数的案例类,我可能有.....

但这里是动作的定义https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/play/api/mvc/Action.scala

这基本上说明 Action 是一个函数对象 Trait ,它可以通过从 Essential 操作中获取的应用以及它自己定义的应用来获取 requestHeader 或 Request ....

我自己无法重现它,一个简单的案例它无法编译,这真是太奇怪了......

0 投票
1 回答
541 浏览

c++ - 了解 MyClass x(y); 其中 y 是 MyClass 类型

我有以下代码是练习的一部分(我在这里问过)。

代码编译并运行(如果我没有忘记把它的相关部分放在这里)。我想了解这条线

我没有输入 MyInt 的构造函数,只有一个没有参数的构造函数和另一个输入 int 的构造函数。MyInt 没有 operator() 的定义。

那条线上的计算机在做什么?

0 投票
1 回答
1104 浏览

types - 函数对象作为 Julia 中的类型字段

是否可以在 Julia 0.3.x 中将函数对象存储为复合类型的成员/字段?

由于可以将函数对象分配给普通变量,这似乎是可能的,但我不确定如何确定正确的类型(有一种Function类型,但我不确定是否以及如何对其进行改进以匹配例如具有两个Int32参数的函数,如果它甚至是要考虑的正确类型)对于这样的字段,如果我希望它对存储函数可以具有的参数类型有限制。TIA。

0 投票
1 回答
510 浏览

c++ - 如何通过引用传递函数?

我有一个具有独立功能的 C++ 程序。

由于团队中的大多数人在面向对象设计和编程方面几乎没有经验或知识,因此我需要避免使用函数对象。

我想将一个函数传递给另一个函数,例如for_each函数。通常,我会使用函数指针作为参数:

我想删除指针,因为它们可以指向任何地方,并且包含无效内容。

有没有一种方法通过引用传递函数,类似于通过指针传递,而不使用函数对象?

例子:

0 投票
3 回答
3436 浏览

c++ - 如何在 for_each 方法中使用自己的类的函数?

假设我有这个类(继承自 std::Vector,这只是一个例子)

如何使用类本身内部的类方法调用 for_each?我知道我可以使用 static 关键字,但是还有什么其他方法可以在不使用 static 的情况下使用函数对象?

我在编译时收到此错误消息:

for_each.cc:21:55: 错误:无法将 'C::transformation' 从类型 'void (C::)(double)' 转换为类型 'void (C::*)(double)' for_each(this-> begin(), this->end(), 转换);

我想我需要在某个地方添加.*或添加,->*但我不知道在哪里以及为什么。

0 投票
1 回答
68 浏览

c++ - 处理函数对象

std::sort是通过比较类参数化的模板。该函数本身将该类的一个对象作为参数,并“调用”它来比较待排序容器的元素。

我认为重要的是我们可以给 sort 一个具体的对象,而不是简单地让 sort 构造一个 Compare 对象本身。(如果不是,请纠正我。)

现在假设我们要实现一个函数,该函数将 a和 的比较函数foo作为输入:vector<T>T

作为此实现的一部分,我们希望对包含成对的不同向量进行排序T,例如,int对 a 进行排序vector<pair<T, int>>。但是我们只想根据T分量对这个向量进行排序。这意味着我们要将给定的订单提升T到订单上pair<T, int>并将该订单传递给std::sort.

不使用 lambdas 怎么办?我的问题是我看不到将Compare 对象T提升到一个 for 的方法pair<T, int>。我只能提升Compare ,然后构造一个对象,这意味着它foo会完全忽略它的comp论点。

谢谢。

0 投票
1 回答
67 浏览

javascript - 将函数分配给函数对象的属性

我有一个这样定义的 JavaScript 函数对象:

我希望能够随意将函数注入到对象中。

当我在该属性中设置一个函数时,该函数没有被分配给对象属性,它仍然显示为undefined

我只是把这一切都错了吗?我应该使用更好的模式吗?


解决方案

阅读评论和回复后,我意识到问题在于我正在覆盖API对象中的值:没有设置对象的处理程序变量。这是一个最小的工作示例:

0 投票
2 回答
56 浏览

python - 创建保持状态的动态函数

Python初学者问题。假设您想动态创建一个保持某种状态的函数(在整数 i 下面的代码中)。然后由于定义的函数是一个对象,我们可以稍后使用它。在下面的代码中,我将函数添加到列表中,每次调用都print(fn(0))应该导致0 1 2 3 4,但我得到4 4 4 4 4的好像只使用了最新的值i

是否有可能在 Python 中完成这段代码试图做的事情?