问题标签 [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 投票
2 回答
149 浏览

c++ - for_each 奇怪的行为

我不怎么使用 STL,我想开始学习它,所以我用 STL 的for_each功能做了一个非常简单的程序。这是整个程序(减去头文件):

程序输出0. 我肯定用for_each错了,但这段代码到底有什么问题?

0 投票
4 回答
2587 浏览

c++ - 在 std::map 中使用 std::tm 作为 Key

我想使用 std::tm () 作为 std::map-container 的键。但是当我尝试编译它时,我得到了很多(10)个错误。

例如:

1.

错误 C2784: 'bool std::operator <(const std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem *)' : 无法推断出 'const std::basic_string<_Elem,_Traits,_Alloc> 的模板参数&' 来自 'const tm' c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional 125

2.

错误 C2784: 'bool std::operator <(const _Elem *,const std::basic_string<_Elem,_Traits,_Alloc> &)' : 无法从 'const tm' c:\ 推导出 'const _Elem *' 的模板参数程序文件 (x86)\microsoft visual studio 10.0\vc\include\xfunctional 125

3.

错误 C2784: 'bool std::operator <(const std::vector<_Ty,_Ax> &,const std::vector<_Ty,_Ax> &)' : 无法推导出 'const std::vector< 的模板参数_Ty,_Ax> &' 来自 'const tm' c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional 125

这一切是否意味着,我“简单地”必须创建一个比较两个 std::tm 的函数对象,因为没有为此定义标准比较?或者还有什么技巧?(或者我什至不可能?^^)

代码:

0 投票
3 回答
16488 浏览

python - 从字符串创建函数对象

问题:有没有办法在 python 中使用字符串创建函数对象?


信息:我正在开发一个将数据存储在 sqlite3 服务器后端的项目。没什么可疯狂的。DAL 类通常通过代码生成来完成,因为代码非常平凡。但这给了我一个想法。在python中,当找不到属性时,如果您定义函数__getattr__,它将在出错之前调用它。所以我想它的方式是,通过解析器和逻辑树,我可以在第一次调用时动态生成我需要的代码,然后将函数对象保存为本地属性。例如:

我已经尝试过编译功能,但是就能够完成这种壮举而言,exec 和 eval 还远远不能令人满意。我需要允许多行功能的东西。除了那些不涉及将它写入磁盘的方法之外,还有其他方法可以做到这一点吗?我再次尝试动态创建一个函数对象

PS:是的,我知道这存在可怕的安全性和稳定性问题。是的,我知道这是一种非常低效的方法。我关心的?不。这是一个概念证明。“python可以做到这一点吗?它可以动态创建一个函数对象吗?” 是我想知道的,而不是一些更好的选择。(尽管在您回答了手头的问题后,您可以随意选择更好的替代方案)

0 投票
3 回答
497 浏览

python - 使用带有可调用对象的装饰器时返回用户定义的函数名

考虑以下代码片段。

这将返回:

该对象的bar行为类似于一个名为 的函数,但在与装饰器一起使用时bar会公开内部实现细节。有没有办法改变对象(也许通过将合适的参数传递给函数)所以它返回__call__print_timingname__init__

? 我想要一个让print_timing装饰器继续使用普通功能的解决方案。运行 print foo()

0 投票
2 回答
4453 浏览

c++ - 检测函数对象(函子)和 lambda 特征

如何检测 nullary 和 unary 函数指针、std::function 对象和仿函数(包括 lambda)的返回类型和参数类型?

Boost 的function_traits功能特征并不能完全让我开箱即用,但我愿意补充或替换它们。

我可以做这样的事情:

但是我应该如何专注于仿函数/lambdas?

更新:也许类似于this answer to a different question,但从重载转换为专业化?

0 投票
4 回答
3189 浏览

c# - C++ 相当于 C# 的 Func

以下代码计算集合中特定属性的平均值Titems

然后我可以用一个lambda表达式来调用它:

我将如何在 C++ 中执行此操作?这是我到目前为止所拥有的:

我该如何用 c++ 调用它lambda


编辑:非常感谢大家,这就是我最终得到的结果:

并在main()

0 投票
2 回答
865 浏览

c++ - 如何依次执行不同参数类型的一元函数对象?

我正在设计一种机制,它将按顺序执行一组一元函数对象。这些函数对象是在运行时赋值的,问题是:这些函数对象的参数类型不同。

我想做的是这样的:

如果我正在编写 C 代码,我别无选择,只能以 void* 作为参数的回调函数指针。但我现在正在使用 C++,应该有一种优雅的方式来处理它。

我现在能想到的最好方法是声明一个实际上从抽象包装类继承的模板类:

这种方法可以满足我的需要,但它会为每个条目分配和释放 template_pair。我不知道这是否会导致内存碎片,因为在此过程中会非常频繁地调用此过程。

有没有更好的方法来做到这一点?

0 投票
2 回答
1609 浏览

c++ - for循环中的临时函数对象

函数对象 randomElementByWeight 构造函数是否会在循环中的每次迭代中被调用,或者编译器是否可以以某种方式对其进行优化?我想确保每次迭代都调用 rand 函数,并且我认为将它放在函数对象构造函数中会更好。

0 投票
2 回答
871 浏览

c++ - 在设置函数指针之前绑定参数?

我想尝试一些东西并在我们的动态库 API 包装器中统一一些样板代码。

本质上,我想做以下事情:

这可能吗?(使用 Boost 还是其他方式?)(C++03

0 投票
1 回答
205 浏览

lambda - 如何返回依赖于模板参数的函数类型?

我想返回一个std::function其类型取决于我的函数模板的一个模板参数的类型。

逻辑上--what-goes-here?--应该是函数的函数签名,该函数返回返回类型F并采用类型参数,F但我似乎无法告诉我的编译器(Visual Studio 2010 Express)这个意图。(注意:在使用示例中,它将是std::function<bool(F)>。)

(注意:我尝试过变体std::result_of<F>::type但没有成功。)

这对 C++0x 可行吗?