问题标签 [functor]
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.
c++ - 是否可以使用 boost::bind 来有效地连接函数?
假设我有一个 boost::function ,带有一个名为 type 的任意签名CallbackType
。
- 是否可以使用
boost::bind
组合一个与 CallbackType 具有相同参数但连续调用两个函子的函数?
我对任何潜在的解决方案持开放态度,但这里有一个......
magic
...使用一些模板的假设示例:
c++ - c++中模板、函子、回调函数的练习题?
过去一周我一直在阅读模板、函子、回调函数,并参考了一些好书和文章。
然而,我觉得,除非我能获得良好的实践——在模板中编程并使用函子回调,否则我无法真正理解所有概念或在编码时流利地使用它们。
任何人都可以建议一些文章或书籍或网站,其中有问题的定义以及相同的解决方案。我可以为这个问题编写代码,然后检查我的解决方案是否足够好..
我也知道我们的一些堆栈溢出成员是模板和回调函数方面的专家。如果他们能设计一个问题并发布一个解决方案,那就太好了,很多像我这样的模板初学者都可以从中受益。
c++ - 通过 Python 将 C++ 对象传递给 C++ 代码?
我用 C++ 编写了一些物理模拟代码,解析输入文本文件是它的瓶颈。作为输入参数之一,用户必须指定一个数学函数,该函数将在运行时进行多次评估。C++ 代码为此有一些预定义的函数类(它们实际上在数学方面非常复杂)和一些有限的解析能力,但我对这种结构一点也不满意。
我需要的是算法和函数评估都保持快速,因此将它们都保留为编译代码(最好将数学函数作为 C++ 函数对象)是有利的。然而,我想将整个模拟与 Python 结合在一起:用户可以在 Python 脚本中指定输入参数,同时也可以在 Python 中实现结果的存储、可视化(matplotlib)和 GUI。
我知道大多数时候可以公开 C++ 类,例如使用 SWIG,但我仍然对 Python 中用户定义的数学函数的解析有疑问:
是否有可能以某种方式在 Python 中构造一个 C++ 函数对象并将其传递给 C++ 算法? 例如,当我打电话时
在 Python 中,它会返回一个指向 C++ 对象的指针,然后将其传递给需要这样一个指针的 C++ 例程,或者类似的东西......(在这种情况下不要问我关于内存管理的问题,虽然:S)
关键是不应对算法中的Python代码进行回调。稍后我想扩展这个例子,在 Python 端做一些简单的表达式解析,例如函数的求和或乘积,并返回一些复合的、解析树的 C++ 对象,但现在让我们停留在基础知识上。
对不起,很长的帖子,谢谢提前提出的建议。
c++ - 调用这个函数对象是如何工作的?
我有一堂课
如果我调用func
喜欢
方法一:
我要打印的消息已打印。
我一直在想我需要做一些类似的事情
方法二:
方法 1 是如何工作的?我的意思是究竟会发生什么?
以及如何调用 fobj 类中的 operator() ?
scala - “不能对参数化类型进行存在抽象......”
我为了好玩而在 Scala 2.8 上乱搞,并试图定义一个皮条客,它为类型构造函数添加一个“as”方法,允许从一个函子转换为另一个函子(请忽略我不一定在这里处理函子的事实) . 因此,例如,您可以像这样使用它:
所以这就是我试图做的:
但是, 的定义naturalTransformations
被标记为错误"can't existentially abstract over parameterized type G[T]"。为了解决这个问题,我可以像这样重写naturalTransformations
一个额外的类Transformable
:
它似乎有效。但似乎我的第一次尝试应该是等效的,所以我很好奇它为什么失败以及错误消息的含义。
c++ - 理解 STL 中的函子
引自 NM Jousttis 的“C++ 标准库”,第 5.9 节
在这里,表达式 AddValue(10) 创建了一个 AddValue 类型的对象,该对象使用值 10 进行初始化。AddValue 的构造函数将该值存储为成员 theValue。在 for_each() 内部,为 coll 的每个元素调用“()”。同样,这是对传递的 AddValue 类型的临时函数对象的 operator () 调用。实际元素作为参数传递。函数对象将其值 10 添加到每个元素。然后元素具有以下值: 加 10 后:
for_each() 的第二次调用使用相同的功能将第一个元素的值添加到每个元素。它使用集合的第一个元素初始化 AddValue 类型的临时函数对象:
添加第一个元素后,输出如下:
我不明白的是在第二种情况下为什么输出不是
意思是为每次调用创建一个新的仿函数,还是每次调用都使用仿函数?
c++ - C++:你在使用 Loki 还是 Boost 作为函子?
我一直在阅读 Alexandrescu 的书 Modern C++ design ,他使用的技术给我留下了深刻的印象,因此我想将Loki 库添加到我的应用程序中。
然而,经过进一步调查,我发现我已经在使用的 boost 提供了许多类似的功能(虽然不是全部,例如,我在 boost 中找不到单例)
由于基于策略的设计和仿函数,我最感兴趣的是使用 loki。
对我来说,boost和loki各有利弊。我对 loki 的主要担忧是糟糕的文档(图书馆不再与书绑定),但在我看来,loki 在某些领域比 boost 更强大和灵活(我可能在那个方面错了)
在选择将 boost 或 loki 用于仿函数和策略之前,我想知道在现实生活中使用它们的人的意见。
有时东西在纸上看起来非常好,但当你真正使用它们时会有一些缺点:)
c++ - Boost 模板参数中发现 C++ 奇怪的语法
我正在查看 Boost 中的“Function”类文档,并偶然发现了这一点:
我必须承认这种语法对我来说非常混乱。这怎么可能是合法的 C++ ?
引擎盖下有什么技巧吗?这种语法是否记录在任何地方?
haskell - 让 Haskell 函子沉入其中。
Learn You a Haskell有一个关于函子的例子。我可以阅读 LYAH 和文字,并弄清楚应该发生什么——但我知道的内容还不够多,无法写出这样的东西。我经常在 Haskell 中发现这个问题。
但是,我很困惑..为什么这不完整
如果f
没有在顶级定义中使用,那么还有什么限制x
使其无法满足Left
function-pointers - boost::function 和普通函数指针:模棱两可的重载
给定以下成员函数重载以采用各种仿函数
和功能
那为什么要取baz的普通函数指针
产生这个错误:
如何解决这种歧义?