问题标签 [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++ - c++仿函数和函数模板
考虑一下这个简单而毫无意义的代码。
这是一个非常简单的函数模板示例。但是,如果我想A::test
用重载替换operator()
它以使其成为仿函数怎么办?
当然如果operator()
取了依赖于模板的参数,编译器就有可能推导出模板。但我只是想不出用无参数仿函数指定模板参数的正确语法。
有没有合适的方法来做到这一点?
显然,这段代码可以工作,因为它绕过了仿函数语法:
但这有点违背了它成为函子的目的:-P。
c# - 函子什么时候应该使用它们它们的预期用途是什么
我只是似乎无法绕过他们。
据我了解,它正在为类动态添加逻辑。框架内的类是否为此做好了准备?
为什么我应该扩展类并在扩展中添加功能。我将可以在全球范围内访问并且 afaik 更容易维护。
我读过有 4 种仿函数类型:
比较器闭
包
谓词
转换 器
我们可能应该处理它们中的每一个。
ps 在vb中有类似的东西吗?
所以我可以说我认为 lambda 表达式是函子。这让我明白了一点:)(呵呵)
- Lambda 表达式是函子吗?
- 匿名函数是函子吗?
但我问了这个问题,因为我遇到了另一种类型的 fucntor,即这些:
然后用这个调用它:
所以没有花哨的 lambda 风格的东西。
现在我有这个例子,但完全不清楚为什么这是一个“好”的解决方案。
委托(函子)是否“在大多数情况下”用作 lambda 表达式或匿名方法,只是作为程序员的捷径?据我所知,只有少数情况下它们实际上是解决问题的首选。
c++ - 我在哪里可以找到,或者如何创建一个优雅的 C++ 成员函数模板包装器机制而不需要提升?
我希望能够在成员函数上模板化一个类,而无需重复成员函数的参数——即自动派生它们。如果我根据函数需要多少参数来命名类,我知道该怎么做,但我也想派生它。
像这样的东西,虽然这不起作用(至少在我的目标编译器 MSVC 2008 sp1 中):
通过“Base”,我可以多态地处理这些。最后,我想用它来为脚本语言创建一个简单的包装语法:
但是,这不起作用:专业化语法是错误的,因为您无法将函数指针匹配到类型名参数。
templates - g ++中的模板函子错误
我有一些代码,我想使用地图中的映射值构建元素向量。下面的代码在 Visual Studio 中运行良好(据我所知似乎是合法的),但 g++ 不同意。
不幸的是,我现在没有确切的错误文本(关于无法弄清楚要使用哪个重载函数)或 g++ 的特定版本(最新版本与 Ubuntu 一起分发),但我会当我得到它时更新这篇文章。
同时,谁能解释为什么 g++ 不能解析所提供的函子的类型?
c++ - STL 字符串比较函子
我有以下仿函数:
它应该是一个严格的弱排序,并且它这么长(可能只有一行)用于调试目的。
我使用这个函子作为 stl::set 的比较函子。问题是,它只插入第一个元素。通过将控制台输出添加到比较器函数中,我了解到它实际上每次都在将文件名与自身进行比较。
其他相关线路是:
和
编辑:调用 .addFile() 的代码是:
其中 all_requests 是一个列表,而类 Request 是这样的:
我希望我能就发生的事情提供我的假设,但我实际上不知道。在此先感谢您的任何指点。
c++ - 使用 STL 算法,传递函数指针还是函子更好?
这两种方法中哪一种更好,为什么?
方法一:
方法二:
编辑:应该这样制定,在什么情况下上述方法中的一种比另一种更可取?
非常感谢!
javascript - 是否可以在 JavaScript 中制作仿函数?
我正在尝试创建一个保持状态但用 foo() 调用的函数。
可能吗?
c++ - C++ 函子和零
首先是免责声明,我正在替换一堆使用 boost::function 和 boost::bind 的代码。但是,我正在转向不允许 rtti 的代码库。我想继续使用 boost 但不知道是否有办法绕过这个限制。
所以,我试图模仿它的一些功能,但要简化得多。我有一个回调类:
这使我可以使用零参数进行简单的回调:
我希望能够将我的回调对象分配为零作为默认参数,如下所示:
这在使用 boost::function 时有效,你可以这样做:
我想 boost 在这里做了一些魔术。我知道我可以将参数更改为指针而不是引用,但正如我所说,我正在替换很多代码,并希望最大限度地减少从 boost.js 更改的影响。
c++ - 作为模板参数传递的函数
我正在寻找涉及将 C++ 模板函数作为参数传递的规则。
C++ 支持这一点,如下面的示例所示:
然而,学习这种技术是困难的。谷歌搜索“作为模板参数的函数”并没有带来太多结果。并且经典的C++ 模板完整指南令人惊讶地也没有讨论它(至少不是来自我的搜索)。
我的问题是这是否是有效的 C++(或者只是一些广泛支持的扩展)。
另外,有没有办法在这种模板调用期间允许具有相同签名的函子与显式函数互换使用?
以下在上述程序中不起作用,至少在Visual C++中,因为语法显然是错误的。能够为仿函数切换函数会很好,反之亦然,类似于如果您想定义自定义比较操作,您可以将函数指针或仿函数传递给 std::sort 算法。
指向一个或两个 Web 链接或 C++ 模板书中的页面的指针将不胜感激!
c++ - 将可调用对象传递给成员函数
我想将 Data 的私有成员 _a 绑定到 Display 的成员函数,但是当我调用 d.Register 时出现编译错误说我的参数类型不匹配,我做错了什么?谢谢。