1
15
|
2
5
在写lambda时,捕捉变量的动作。 明显地 改变底层代码的结构(将变量移动到编译器生成的类的字段中,这些类本身很容易被链接到闭包上下文中)。 甚至不考虑将军 复杂性 这样做,它将有两个选择:
如果在“不受欢迎”和“不可能”之间做出选择,我 猜测 他们只是选择不实现固有的脆弱特性, 和 写起来很复杂。 |
3
4
我认为这是因为即时窗口只能计算表达式,或者更确切地说,它只能进行调用和赋值。要计算lambda表达式,必须为该lambda创建一个闭包,然后执行typechecked。 我认为归根结底,即时窗口只是一个评价者,而不是一个口译员。 http://msdn.microsoft.com/en-us/library/f177hahy(VS.80).aspx “即时窗口在设计时用于调试和评估表达式、执行语句、打印变量值等。它允许您输入要在调试期间由开发语言计算或执行的表达式。” 所以实际上,你的问题归结为为什么你不能在即时窗口中定义函数(因为lambda只是一个无意义的函数),我想答案是它根本不是为这个而设计的。 |
4
1
如果仍然需要使用Visual Studio 2013,则实际上可以使用包管理器控制台窗口在即时窗口中编写循环或lambda表达式。在我的例子中,我在函数的顶部添加了一个列表:
其中,getall()函数是:
在这里,我一直得到以下错误,所以我想打印出各种存储库中的所有项目:
然后,我通过在即时窗口中执行以下操作来了解部门存储库中有多少记录:
返回243。 因此,如果在包管理器控制台中执行以下操作,它将打印出所有项目:
这个想法的作者可以在这里找到: http://ogresoft.blogspot.ca/2013/06/how-to-write-loop-or-lambda-expression.html |
5
-1
我假设,因为它是懒惰的评估,所以即时窗口不能预先知道捕获的变量(闭包)应该具有什么值。 |
Sergei · 删除数据框中多个列的列表中的某些元素 2 年前 |