Tag: lambda

lambdaexpression式中的枚举编译方式不同; 重载解决scheme改进的后果?

在尝试Visual Studio 2015 RC时,我收到了以前工作代码的运行时错误。 给定作为Expression<>传递给函数的lambda (x => x.CustomerStatusID == CustomerStatuses.Active) ,debugging器在expression式树中显示差异。 以前它编译为: .Lambda #Lambda1<System.Func`2[Services.DataClasses.CustomerDC,System.Boolean]>(Services.DataClasses.CustomerDC $x) { (System.Int32)$x.CustomerStatusID == 0 } 但在C#6.0中,现在编译为 .Lambda #Lambda1<System.Func`2[Services.DataClasses.CustomerDC,System.Boolean]>(Services.DataClasses.CustomerDC $x) { (System.Int32)$x.CustomerStatusID == (System.Int32).Constant<Services.DataClasses.CustomerStatuses>(Active) } 虽然我的树遍历代码的修复是直截了当的,额外的细节是赞赏,有没有人知道任何其他陷阱像这样漂浮? 或者,有没有人有链接的重载分辨率如何改善的具体细节的信息? 我找不到任何东西。

Lambda作为基类

和Lambdas一起玩,我发现了一个我不完全明白的有趣的行为。 Supose我有一个从2个模板参数派生的struct Overload ,并有一个using F1::operator(); 条款。 现在,如果我从两个函数派生,我只能访问F1的operator()(正如我所期望的) 如果我从两个Lambda函数派生出来,这不再是事实:我也可以从F2访问operator()。 #include <iostream> // I compiled with g++ (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) // // g++ -Wall -std=c++11 -g main.cc // g++ -Wall -std=c++11 -DFUNCTOR -g main.cc // // or clang clang version 3.3 (tags/RELEASE_33/rc2) // // clang++ -Wall -std=c++11 -g main.cc // clang++ -Wall -std=c++11 -DFUNCTOR […]

在成员函数内的lambda捕获列表中使用成员variables

以下代码使用gcc 4.5.1进行编译,但不使用VS2010 SP1进行编译: #include <iostream> #include <vector> #include <map> #include <utility> #include <set> #include <algorithm> using namespace std; class puzzle { vector<vector<int>> grid; map<int,set<int>> groups; public: int member_function(); }; int puzzle::member_function() { int i; for_each(groups.cbegin(),groups.cend(),[grid,&i](pair<int,set<int>> group){ i++; cout<<i<<endl; }); } int main() { return 0; } 这是错误的: error C3480: 'puzzle::grid': a lambda capture variable must […]

知道lambda微积分有多大帮助?

对于所有了解lambda微积分的人来说:它给你带来了什么好处,关于编程? 你会build议人们学习吗?

entity framework – 无法将lambdaexpression式转换为“string”types,因为它不是委托types

我在我的基于C#的代码中使用entity framework。 我遇到了一个意想不到的奇怪,我正在寻找build议。 案例1,2,3,4 …项目: RivWorks.dll RivWorks.Service.dll RivWorks.Alpha.dll 样品(所有这些工作): RivWorks.Alpha.dll: public static bool EndNegotitation(long ProductID) { var product = (from a in _dbFeed.AutoWithImage where a.AutoID == ProductID select a).FirstOrDefault(); … } RivWorks.Service.dll public static RivWorks.Model.NegotiationAutos.AutoWithImage GetProductById(long productId) { var myProduct = from a in _dbFeed.AutoWithImage where a.AutoID == productId select a; return myProduct.FirstOrDefault(); } public […]

使用lambda按多列分组

如何使用lambda进行多列分组? 我看到了如何使用linq来实体的例子,但是我正在寻找lambda表单。

在LINQ Lambdaexpression式中使用GroupBy,Count和Sum

我有一个箱子的属性重量,体积和所有者的集合。 我想用LINQ来获取箱子信息的总结列表(由所有者) 例如 **Owner, Boxes, Total Weight, Total Volume** Jim, 5, 1430.00, 3.65 George, 2, 37.50, 1.22 有人可以告诉我如何用Lambdaexpression式做到这一点?

为什么我不能在C ++ 11中创build一个lambdas向量(相同types)?

我试图创build一个lambdavector,但失败了: auto ignore = [&]() { return 10; }; //1 std::vector<decltype(ignore)> v; //2 v.push_back([&]() { return 100; }); //3 直到第二行,它编译好 。 但#3行给出编译错误 : 错误:调用'std :: vector <main():: lambda()>> push_back(main():: lambda()>' 我不想要一个函数指针向量或函数对象向量。 然而,封装真正的 lambdaexpression式的函数对象的向量,将为我工作。 这可能吗?

Java8的Lambdas与匿名类

由于Java8最近刚刚发布,它的全新lambdaexpression式看起来非常酷,所以我想知道这是否意味着我们习以为常的匿名类的消亡。 我一直在研究一些这方面的知识,并且发现了一些关于Lambdaexpression式如何系统地replace这些类的很酷的例子,比如Collection的Sort方法,它用来得到一个Comparator的Anonymous实例来执行sorting: Collections.sort(personList, new Comparator<Person>(){ public int compare(Person p1, Person p2){ return p1.firstName.compareTo(p2.firstName); } }); 现在可以使用Lambdas完成: Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName)); 看起来令人惊讶的简洁。 所以我的问题是,有什么理由继续在Java8中使用这些类而不是Lambdas? 编辑 同样的问题,但在相反的方向,使用Lambdas而不是匿名类的好处是什么,因为Lambdas只能用于单一的方法接口,这个新function只是一个仅在less数情况下使用的快捷方式,还是真的有用吗?

如何用lambdaexpression式debuggingstream()。map(…)?

在我们的项目中,我们正在迁移到Java 8,我们正在testing它的新function。 在我的项目中,我使用Guava谓词和函数来使用Collections2.transform和Collections2.filter来过滤和转换一些集合。 在这个迁移我需要改变例如番石榴代码到Java 8的变化。 所以,我正在做的改变是这样的: List<Integer> naturals = Lists.newArrayList(1,2,3,4,5,6,7,8,9,10,11,12,13); Function <Integer, Integer> duplicate = new Function<Integer, Integer>(){ @Override public Integer apply(Integer n) { return n * 2; } }; Collection result = Collections2.transform(naturals, duplicate); 至… List<Integer> result2 = naturals.stream() .map(n -> n * 2) .collect(Collectors.toList()); 使用番石榴我非常舒适的debugging代码,因为我可以debugging每个转换过程,但我关心的是如何debugging例如.map(n -> n*2) 。 使用debugging器,我可以看到一些代码: @Hidden @DontInline /** Interpretively […]