lambda 相关问题

编程语言中的匿名函数或闭包,如Lisp,C#,C ++,Lua,Python,Ruby,JavaScript或Java。 (另外,lambda表达式。)

使用 lambda 函数的Python defaultdict 会导致错误:TypeError: <lambda>() 缺少 1 个必需的位置参数:'x'

尝试将输入文本映射到关联的数值,允许使用默认字典丢失未表示的条目。 运行下面的代码是可行的,但是当我使用 lambda 添加默认值时,我得到了......

回答 1 投票 0

如何使用 MAP 和 LAMBDA 在 Google 表格中使此运行余额更加精细?

一位天才帮助我到达了这里,但我无法独自走得更远。 这是场景: G列的公式为: ={"运行平衡";map(A3:A8;B3:B8;C3:C8;D3:D8;E3:E8;lambda(Σ;Λ...

回答 1 投票 0

使用 LINQ 和 Lambda 加入/Where

我在使用 LINQ 和 Lambda 编写的查询时遇到问题。到目前为止,我遇到了很多错误,这是我的代码: 整数 ID = 1; var 查询 = 数据库.Posts.Join( 数据库.Post_Metas, 发布 =>

回答 10 投票 0

在 C++20 之前,有没有办法将未知大小的数组传递给 lambda?

我有一个宏,它创建 Info 类的实例,该类接受具有模板化大小的数组作为构造函数参数。尺寸信息用于检查。 我想检查一下...

回答 1 投票 0

这两种qt信号槽连接有什么功能区别?

我使用 Qt 5.9.2 与 Visual Studio 2015 和 QtDesigner 来编程 Windows GUI 应用程序。我尝试通过以下调用连接我的操作之一: 连接(ui.myAction,&QAction::

回答 1 投票 0

如何在动态创建的 Lambda 表达式中用属性标记参数?

执行以下操作,我获得了一个简单的 lambda 来对两个整数求和: 使用 System.Linq.Expressions; var xParam = Expression.Parameter(typeof(int), "x"); var yParam = Expression.Parameter(t...

回答 1 投票 0

c# 表达式中闭包变量捕获的问题

我有一个使用表达式树创建委托的函数。在此表达式中,我使用从传递到函数的多个参数捕获的变量。实际的表达式树是

回答 2 投票 0

运行 aws lambda python 3.9 时找不到版本“GLIBC_2.28”

突然,当我运行我的 aws lambda 时,我收到此错误: “无法导入模块“lambda_name”:/lib64/libc.so.6:找不到版本“GLIBC_2.28”(/var/task/cryptography/hazmat/bi 需要...

回答 1 投票 0

值位于枚举列表中

我有一个相当基本的问题:如何检查给定值是否包含在枚举值列表中? 例如,我有这个枚举: 公共枚举用户状态 { 未经证实, 积极的, 雷姆...

回答 7 投票 0

PyQt QObject.connect(instancemethod) 和 QtCore.connect(Qobj, SIGNAL(), instancemethod) 的行为与 lambda 函数不同

在从字符串列表创建 PyQt 菜单的后续过程中,我也在动态创建菜单,并想知道单击了哪个菜单项。因此我使用了一段代码,例如: 对于

回答 1 投票 0

参数数量在编译时确定的 Lambda 函数

我想声明一个具有 N 个参数的 lambda 函数,其中 N 是模板参数。就像是... 模板 A类{ 标准::函数 我想声明一个具有 N 个参数的 lambda 函数,其中 N 是模板参数。类似... template <int N> class A { std::function<void (double, ..., double)> func; // exactly n inputs }; 我想不出用元函数范例来做到这一点的方法。 您可以使用嵌套的 typedef n_ary_function 编写模板 type。该类型可以如下使用: template <int N> class A { typename n_ary_function<N, double>::type func; }; 以下代码片段包含n_ary_function的定义: template <std::size_t N, typename Type, typename ...Types> struct n_ary_function { using type = typename n_ary_function<N - 1, Type, Type, Types...>::type; }; template <typename Type, typename ...Types> struct n_ary_function<0, Type, Types...> { using type = std::function<void(Types...)>; }; 元template采用模板、计数和类型,并使用类型的N副本调用模板: template<template<class...>class target, unsigned N, class T, class... Ts> struct repeat_type_N: repeat_type_N<target, N-1, T, T, Ts...> {}; template<template<class...>class target, class T, class... Ts> struct repeat_type_N<target, 0, T, Ts...> { typedef target<Ts...> type; }; template<template<class...>class target, unsigned N, class T> using repeat_type_N_times = typename repeat_type_N<target, N, T>::type; 现在,我们使用它: template<typename... Ts> using operation=void(Ts...); template<unsigned N, class T> using N_ary_op = repeat_type_N_times< operation, N, T >; template<unsigned N> using N_double_func = N_ary_op<N,double>; 我们测试一下: void three_doubles(double, double, double) {} int main() { N_double_func<3>* ptr = three_doubles; std::function< N_double_func<3> > f = three_doubles; } 并获胜。 您到底使用double, double, double做什么完全取决于您在上述系统中的情况。例如,您可以使用 lambda 来初始化 std::function。 您可以将 double, double, double 打包到 template<class...>struct type_list{}; 中,这样您就可以将其作为一个参数传递给另一个 template,然后专门对其进行解包。 A repeat_type 对于大 N 具有较少的递归: // package for types. The typedef saves characters later, and is a common pattern in my packages: template<class...>struct types{typedef types type;}; // Takes a target and a `types`, and applies it. Note that the base has no implementation // which leads to errors if you pass a non-`types<>` as the second argument: template<template<class...>class target, class types> struct apply_types; template<template<class...>class target, class... Ts> struct apply_types<target, types<Ts...>>{ typedef target<Ts...> type; }; // alias boilerplate: template<template<class...>class target, class types> using apply_types_t=typename apply_types<target,types>::type; // divide and conquer, recursively: template<unsigned N, class T, class Types=types<>> struct make_types:make_types< (N+1)/2, T, typename make_types<N/2, T, Types>::type > {}; // terminate recursion at 0 and 1: template<class T, class... Types> struct make_types<1, T, types<Types...>>:types<T,Types...> {}; template<class T, class Types> struct make_types<0, T, Types>:Types{}; // alias boilerplate: template<unsigned N, class T> using make_types_t=typename make_types<N,T>::type; // all of the above reduces `repeat_type_N_t` to a one-liner: template<template<class...>class target, unsigned N, class T> using repeat_type_N_times = apply_types_t<target, make_types_t<N,T>>; 对于大型N,上述可以显着减少编译时间,并处理template堆栈溢出。 您不能直接执行此操作。 你可以做这样的事情 template <unsigned N> class UniformTuple; template <> class UniformTuple <0> { }; template <unsigned N> class UniformTuple : public UniformTuple <N-1> { public: template <typename... Args> UniformTuple (double arg, Args... args) : UniformTuple <N-1> (args...) , m_value (arg) { } private: double m_value; }; template <int N> class A { std :: function <void (const UniformTuple <N> &)> func; }; 为了完整起见,这是一个不使用递归的解决方案: template <class Ret, class Arg, class Idx> struct n_ary_function_; template <class Ret, class Arg, std::size_t... Idx> struct n_ary_function_<Ret, Arg, std::index_sequence<Idx...>> { template <class T, std::size_t> using id = T; using type = std::function<Ret(id<Arg, Idx>...)>; }; template <class Ret, class Arg, std::size_t N> using n_ary_function = typename n_ary_function_< Ret, Arg, std::make_index_sequence<N> >::type; 在 Coliru 上观看直播 NoSid 的解决方案非常有创意(本质上是一一“追加”类型)。我编写的另一个解决方案可能需要更少的脑力劳动,如下所示使用 std::index_sequence (这是创建未知大小的参数包的一种非常自然的方法): #include <utility> #include <functional> #include <type_traits> template<typename T, long U> struct reduce { using type = T; }; template<typename U, typename IndexSequence> struct FunctionHolderImpl; template<typename U, long ... Indices> struct FunctionHolderImpl<U, std::index_sequence<Indices...>> { using value = std::function<void(typename reduce<U, Indices>::type...)>; }; template<long N> struct FunctionHolder { using func = FunctionHolderImpl<double, std::make_index_sequence<N>>::value; };

回答 5 投票 0

C# 中的 lambda 表达式/委托是“纯粹的”吗?

我最近询问了没有副作用的函数式程序,并了解了这对于使并行任务变得微不足道意味着什么。具体来说,“纯”函数使这变得微不足道,因为它们...

回答 5 投票 0

为什么这些代码块不能全部工作?

代码#1 此代码有效 (定义*o (λ(xyz) (如果(= y 0) z (*o x (sub1 y) (+ z x))))) (*o 7 3 0) 代码#2 该代码不起作用 (

回答 1 投票 0

无法重现python cdk层zip

我的 lambda 使用请求。我有一个 package.zip 文件,当我使用 cdk 进行部署时,该文件可以正常工作。我尝试了多种方法来重现我拥有的 package.zip 。我尝试过的所有方法都失败了。哦...

回答 1 投票 0

用 STREAM 和 LAMBDA 替换 IF 和 FOR 循环

我想优化我的代码。我曾经使用 for 循环和 ifs,但我知道还有比这更快的方法。我对 lambda 表达式和流还很陌生。为了练习,我决定重新开始...

回答 2 投票 0

方法引用在流的收集方法中不起作用

我正在尝试对列表中的元素进行排序,并使用 java 8 流将其收集并打印在单独的列表中,下面是代码。 工作代码: System.out.println(coursesList.stream() .排序(

回答 1 投票 0

这个嵌套 lambda 函数是如何工作的?

我们如何得到120的输出呢? 我不太明白函数中的 x(y) 是什么。哪些参数被传递到哪个函数? def 组合器(y): 返回 (lambda x: lambda y: x(y))(lambda...

回答 1 投票 0

在键上使用 lambda 函数排序时解构元组

我使用频率(%)和熵(位)。这两个现实非常相似,很容易将它们混淆。 当我有频率/熵元组时,我总是命名元组成员,以便...

回答 1 投票 0

c++ 线程:将线程函数包装在 lambda 中

#包括 #包括 类我的类{ 民众: MyClass(int val) : val_(val) {} int val_{0}; }; void threadFunction(MyClass myObj) { // 做一点事 ... } ...

回答 1 投票 0

用于初始化数组的 Lambda 表达式

有没有办法使用简单的 lambda 表达式来初始化数组或集合? 就像是 // 那这个呢? 人[]人=新人[15]; people = () -> {返回新的 Per...

回答 4 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.