Tag: lambda

用lambda从列表<>中删除重复值的最快方法

什么是从列表中删除重复值的最快方法。 假设List<long> longs = new List<long> { 1, 2, 3, 4, 3, 2, 5 }; 所以我很有趣的使用lambda删除重复并返回: {1, 2, 3, 4, 5} 。 你有什么build议?

Java 8比较器types推断非常困惑

我一直在查看Collections.sort和list.sort之间的区别,特别是关于使用Comparator静态方法以及在lambdaexpression式中是否需要参数types。 在我们开始之前,我知道我可以使用方法引用,例如Song::getTitle来克服我的问题,但是我的查询并不是我想要解决的问题,而是我想要的答案,即为什么Java编译器要处理就这样。 这些是我的发现。 假设我们有一个Songtypes的ArrayList ,添加了一些歌曲,有3个标准的获取方法: ArrayList<Song> playlist1 = new ArrayList<Song>(); //add some new Song objects playlist.addSong( new Song("Only Girl (In The World)", 235, "Rhianna") ); playlist.addSong( new Song("Thinking of Me", 206, "Olly Murs") ); playlist.addSong( new Song("Raise Your Glass", 202,"P!nk") ); 这是对这两种types的sorting方法的调用,没有问题: Collections.sort(playlist1, Comparator.comparing(p1 -> p1.getTitle())); playlist1.sort( Comparator.comparing(p1 -> p1.getTitle())); 一旦我开始链接thenComparing ,会发生以下情况: Collections.sort(playlist1, Comparator.comparing(p1 -> […]

何时不使用lambdaexpression式

许多问题正在堆栈溢出回答,成员指定如何使用lambdaexpression式解决这些现实世界/时间问题。 我们是否过度使用,是否考虑了使用lambdaexpression式的性能影响? 我发现了一些文章,探讨了lambda与匿名代理vs不同结果for / foreach循环的性能影响 匿名委托与Lambdaexpression式与函数调用性能 foreach与List.ForEach的性能 .NET / C#循环性能testing(FOR,FOREACH,LINQ和Lambda) 。 DataTable.Select比LINQ更快 在select合适的解决scheme时,评估标准应该是什么? 除了使用lambda时更简洁的代码和可读性的明显原因。

在.NET Framework中,lambdas和委托有什么区别?

我被问了很多这个问题,我想我会征求一些关于如何最好地描述差异的意见。

Lambda作为函数参数

声明一个lambdavariables或函数参数,而不使用auto或模板的符号是什么? 有没有办法做到这一点? 或者编译器在编译之前为程序员未知的每个lambda定义一个唯一的类对象? 如果是这样,为什么? 他们不能只是作为某种函数指针传递? 如果这是不可能的,这将是一个主要的失望。

来自列表理解的Lambdas在被调用时返回一个lambda

我想迭代在列表中的lambda func在test.py ,我想获得lambda的调用结果,而不是函数对象本身。 但是,下面的输出真的让我困惑。 ——test.py——— #!/bin/env python #coding: utf-8 a = [lambda: i for i in range(5)] for i in a: print i() ——–output——— <function <lambda> at 0x7f489e542e60> <function <lambda> at 0x7f489e542ed8> <function <lambda> at 0x7f489e542f50> <function <lambda> at 0x7f489e54a050> <function <lambda> at 0x7f489e54a0c8> 打印电话结果到t时,我修改了variables名,如下,一切顺利。 我想知道这是什么。 ? ——–test.py(update)——– a = [lambda: i for i in […]

访问成员expression式的值

如果我有一个产品。 var p = new Product { Price = 30 }; 我有以下linq查询。 var q = repo.Products().Where(x=>x.Price == p.Price).ToList() 在一个IQueryable提供程序中,我得到一个包含常量expression式的p.Price的MemberExpression,但是我似乎无法从中得到值“30”。 更新我已经尝试过,但它似乎并没有工作。 var memberExpression = (MemberExpression)GetRootConstantExpression(m); var fi = (PropertyInfo)memberExpression.Member; var val = fi.GetValue(((ConstantExpression)memberExpression.Expression).Value, null); 干杯。

如何使用lambdaexpression式检查元素是否存在?

具体来说,我有TabPane,我想知道是否有具有特定ID的元素。 所以,我想用Java中的lambdaexpression式来做这件事: boolean idExists = false; String idToCheck = "someId"; for (Tab t : tabPane.getTabs()){ if(t.getId().equals(idToCheck)) { idExists = true; } }

Visual Studio立即窗口 – Lambdaexpression式不允许 – 是否有解决方法或替代?

我在VS 2010中debugging了一些棘手的generics基于列表的代码 – 大量的层次结构处理等。当然,lambdaexpression式和匿名方法是不允许在立即窗口内,我不能通过代码步进在通常的方式,因为我仍然试图让我的头在层次结构… 任何人都可以提出一个解决方法或替代工具?

如何在Python中创build一个匿名函数而不用洗礼呢?

是否有可能把一个函数在数据结构中,而没有先用def给它起一个名字? # This is the behaviour I want. Prints "hi". def myprint(msg): print msg f_list = [ myprint ] f_list[0]('hi') # The word "myprint" is never used again. Why litter the namespace with it? lambda函数的主体是严格限制的,所以我不能使用它们。 编辑:作为参考,这更像是我遇到问题的现实生活中的代码。 def handle_message( msg ): print msg def handle_warning( msg ): global num_warnings, num_fatals num_warnings += 1 if ( is_fatal( […]