Tag: lambda

这个对象生命周期扩展闭包是一个C#编译器错误吗?

当我碰到C#编译器(如果有问题的话)的一些非常好奇的代码的时候,我正在回答关于closures(合法地)延长对象生命期的可能性的问题。 最短的repro我可以find如下: 在调用包含types的静态方法的同时创build一个捕获本地的lambda。 将生成的委托引用分配给包含对象的实例字段。 结果:编译器创build一个闭包对象,该闭包对象引用创buildlambda的对象,当它没有理由时 – 委托的“内部”目标是一个静态方法,并且lambda创build对象的实例成员不需要当代表执行时,(而不是)被触摸。 实际上,编译器就像程序员没有理由地捕捉到了this 。 class Foo { private Action _field; public void InstanceMethod() { var capturedVariable = Math.Pow(42, 1); _field = () => StaticMethod(capturedVariable); } private static void StaticMethod(double arg) { } } 从发布版本生成的代码(反编译为“简单”C#)看起来像这样: public void InstanceMethod() { <>c__DisplayClass1 CS$<>8__locals2 = new <>c__DisplayClass1(); CS$<>8__locals2.<>4__this = this; // What's this doing […]

使用lambdaexpression式将对象列表从一种types转换为另一种types

我有一个foreach循环读取一个types的对象列表,并产生一个不同types的对象列表。 我被告知lambdaexpression式可以达到相同的结果。 var origList = List<OrigType>(); // assume populated var targetList = List<TargetType>(); foreach(OrigType a in origList) { targetList.Add(new TargetType() {SomeValue = a.SomeValue}); } 任何帮助将不胜感激,我是新lambda和linq谢谢,S

如何在.Net中使用lambdaexpression式中的“=>”

我很less遇到其他程序员! 当我第一次看到这个标记的时候,我的想法是“暗示着”,因为这就是它在math上certificate的那样,但这显然不是它的意义。 那么我怎么说或读“=>”如下: IEnumerable<Person> Adults = people.Where(p => p.Age > 16) 还是甚至有一种同意的说法呢?

从Java 8stream中断或返回forEach?

当对Iterable使用外部迭代时 ,我们使用break或者从增强的for-each循环return : for (SomeObject obj : someObjects) { if (some_condition_met) { break; // or return obj } } 我们如何使用Java 8 lambdaexpression式中的内部迭代来break或return : someObjects.forEach(obj -> { //what to do here? })

lambda函数可以模板化吗?

在C ++ 11中,有没有办法模拟一个lambda函数? 或者它本身是太具体的模板? 我明白,我可以定义一个经典的模板类/函子,但问题更像是:该语言是否允许模板lambda函数?

有没有办法在Python的lambda中执行“if”

在Python 2.6中 ,我想要做的是: f = lambda x: if x==2 print x else raise Exception() f(2) #should print "2" f(3) #should throw an exception 这显然不是语法。 是否有可能在lambda执行if ,如果是的话怎么做? 谢谢

你如何使用linq扩展方法执行左外连接

假设我有一个左外连接,如下所示: from f in Foo join b in Bar on f.Foo_Id equals b.Foo_Id into g from result in g.DefaultIfEmpty() select new { Foo = f, Bar = result } 我将如何使用扩展方法来expression相同的任务? 例如 Foo.GroupJoin(Bar, f => f.Foo_Id, b => b.Foo_Id, (f,b) => ???) .Select(???)

帮助C#开发人员了解:什么是monad?

这些天有很多关于monad的讨论。 我已经阅读了一些文章/博客文章,但是我不能用他们的例子去充分理解这个概念。 原因是monad是一个function性的语言概念,因此这些例子是用我没有用过的语言(因为我没有深入地使用函数式语言)。 我不能够深入地把握这个语法来完全遵循这些文章,但是我可以告诉我们这里有一些值得理解的东西。 但是,我非常了解C#,包括lambdaexpression式和其他function特性。 我知道C#只有一个function特性的子集,所以monad不能用C#表示。 但是,当然可以传达这个概念吗? 至less我希望如此。 也许你可以提供一个C#的例子作为基础,然后描述一下C#开发人员希望他能从那里做什么,但不能,因为这种语言缺乏函数式编程function。 这将是太棒了,因为它会传达单子的意图和好处。 所以这里是我的问题: 对于C#3开发人员来说,可以给monads最好的解释是什么? 谢谢! (编辑:顺便说一下,我知道至less有3个“monad”是什么问题,但是我面对同样的问题…所以这个问题是需要imo的,因为C#开发人员重点,谢谢。)

如何删除一个lambda事件处理程序

可能重复: 在C#中取消订阅匿名方法 我如何取消注册“匿名”事件处理程序 我最近发现我可以使用lambda来创build简单的事件处理程序。 我可以例如订阅像这样的点击事件: button.Click += (s, e) => MessageBox.Show("Woho"); 但是,你会如何取消订阅?

Python中没有多行Lambda:为什么不呢?

我听说它说多线lambdas不能在Python中添加,因为它们会与Python中的其他语法结构在语法上发生冲突。 我今天在公交车上想到这个,意识到我想不出一个多线lambdas碰撞的Python构造。 鉴于我很熟悉这门语言,这让我感到惊讶。 现在,我确定Guido有理由不在语言中包含多行lambdaexpression式,但是出于好奇:包含多行lambdaexpression式的情况会不明确? 是我听说过的真的,还是有其他原因,Python不允许多行lambdas?