Questions tagged «lambda»

不要使用AWS服务(对于这些问题,请使用[aws-lambda]!)Lambda是匿名函数或编程语言(例如Lisp,C#,C ++,Lua,Python,Ruby,JavaScript或Java)中的闭包。(也就是lambda表达式。)

3
为什么使用invokedynamic调用Java 8 lambda?
该invokedynamic指令用于帮助VM在运行时确定方法引用,而不是在编译时对其进行硬接线。 这对于动态语言非常有用,在动态语言中直到运行时才知道确切的方法和参数类型。但是Java lambda并非如此。它们被转换为带有定义明确的参数的静态方法。并且可以使用调用此方法invokestatic。 那么,invokedynamic对于lambda的需求是什么,尤其是在性能受到影响时?
69 java  lambda  jvm  java-8  bytecode 

5
传递lambda而不是接口
我创建了一个界面: interface ProgressListener { fun transferred(bytesUploaded: Long) } 但只能将其用作匿名类,不能用作lambda dataManager.createAndSubmitSendIt(title, message, object : ProgressListener { override fun transferred(bytesUploaded: Long) { System.out.println(bytesUploaded.toString()) } }) 我认为应该可以用lambda代替它: dataManager.createAndSubmitSendIt(title, message, {System.out.println(it.toString())}) 但是我得到了错误: Type mismatch; required - ProgressListener, found - () -> Unit? 我究竟做错了什么?
69 lambda  kotlin 

7
Java 8中的可选链接
寻找一种链接可选项的方法,以便返回存在的第一个。如果不存在,Optional.empty()应返回。 假设我有几种这样的方法: Optional<String> find1() 我正在尝试将它们链接起来: Optional<String> result = find1().orElse( this::find2 ).orElse( this::find3 ); 但是当然这是行不通的,因为orElse期望一个值并且orElseGet期望一个Supplier。
68 java  lambda  java-8  optional 

1
lambda表达式中的枚举的编译方式有所不同;过载分辨率改善的结果?
尝试使用Visual Studio 2015 RC时,我收到了先前工作代码的运行时错误。给定lambda (x => x.CustomerStatusID == CustomerStatuses.Active)作为传递给函数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) } 尽管对我的遍历树的代码的修复很简单,并且可以理解其他细节,但是有人知道像这样漂浮的其他陷阱吗? 或者,是否有人链接到有关如何改进重载分辨率的细节的信息?我找不到。
68 c#  lambda  enums  roslyn  c#-6.0 

3
可以用lambda代替侦听器是什么意思?
我已经实现了AlertDialog带有正常的否定和肯定按钮单击侦听器的。 当我打电话new DialogInterface.OnClickListener()是向我演示了一个建议的说法:Anonymous new DialogInterface.OnClickListener() can be replaced with lambda。我知道这不是错误或重大错误,但是这建议到底是什么,我该怎么办? AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setPositiveButton("Text", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // do something here } }); Android Studio V1.2.1.1 compileSdkVersion 22 buildToolsVersion "22.0.0" minSdkVersion 14 targetSdkVersion 22


5
如何在Lambda本身中获取C ++ Lambda函数的地址?
我试图弄清楚如何获取自身内部的lambda函数的地址。这是一个示例代码: []() { std::cout << "Address of this lambda function is => " << ???? }(); 我知道我可以在变量中捕获lambda并打印地址,但是我想在执行此匿名函数时就地执行该操作。 有没有更简单的方法?
53 c++  c++11  lambda  c++14  c++17 

4
为什么在编译时不检查lambda返回类型?
使用的方法引用具有返回类型Integer。但是String在下面的示例中,允许不兼容。 如何解决方法with声明以确保方法引用类型安全而无需手动强制转换? import java.util.function.Function; public class MinimalExample { static public class Builder<T> { final Class<T> clazz; Builder(Class<T> clazz) { this.clazz = clazz; } static <T> Builder<T> of(Class<T> clazz) { return new Builder<T>(clazz); } <R> Builder<T> with(Function<T, R> getter, R returnValue) { return null; //TODO } } static public interface MyInterface …

6
有没有办法声明C#lambda并立即调用它?
可以声明一个lambda函数并立即调用它: Func<int, int> lambda = (input) => { return 1; }; int output = lambda(0); 我想知道是否可以在一行中这样做,例如 int output = (input) => { return 1; }(0); 它给出了一个编译器错误“期望的方法名称”。强制转换为Func<int, int>不起作用: int output = (Func<int, int>)((input) => { return 1; })(0); 给出相同的错误,并且出于下面提到的原因,我想避免必须显式指定输入参数类型(第一个int)。 您可能想知道为什么我要这样做,而不是直接将代码直接嵌入,例如int output = 1;。原因如下:我已经使用生成了SOAP Web服务的引用svcutil,由于嵌套的元素会生成非常长的类名,因此我希望避免键入它。所以代替 var o = await client.GetOrderAsync(request); return new …
29 c#  lambda 

3
为什么在使用Invoke方法时编译正常,而直接返回Func <int,int>却不正常?
我不了解这种情况: public delegate int test(int i); public test Success() { Func&lt;int, int&gt; f = x =&gt; x; return f.Invoke; // &lt;- code successfully compiled } public test Fail() { Func&lt;int, int&gt; f = x =&gt; x; return f; // &lt;- code doesn't compile } 为什么在使用Invoke方法时编译正常,而csharp Func&lt;int,int&gt;直接返回时却正常?
28 c#  lambda  delegates 

2
当lambda捕获“ ​​this”时,是否必须明确使用它?
我发现this在lambda 中捕获的示例显式使用了它。例如: capturecomplete = [this](){this-&gt;calstage1done();}; 但是似乎也可以隐式使用它。例如: capturecomplete = [this](){calstage1done();}; 我在g ++中对此进行了测试,并对其进行了编译。 这是标准的C ++吗?(如果可以,是哪个版本),还是某种扩展形式?

1
为什么要声明一个与父作用域中的变量同名的子变量?
我最近写了一些代码,在其中我无意中将变量名重用为函数中声明的操作的参数,该函数已经具有相同名称的变量。例如: var x = 1; Action&lt;int&gt; myAction = (x) =&gt; { Console.WriteLine(x); }; 当我发现重复项时,我很惊讶地看到代码可以完美地编译和运行,这并不是基于我对C#范围的了解而期望的行为。一些快速的Google搜索出现SO问题,它们抱怨类似的代码确实会产生错误,例如Lambda Scope Clarification。(我将示例代码粘贴到IDE中,以确保它可以运行;只是为了确保它可以正常运行。)此外,当我在Visual Studio中进入“重命名”对话框时,第一个x突出显示为名称冲突。 为什么此代码有效?我在Visual Studio 2019中使用C#8。

3
Lambda函数可变捕获从引用到全局变量的行为差异
我发现如果我使用lambda使用mutable关键字捕获对全局变量的引用,然后修改lambda函数中的值,则结果在编译器之间是不同的。 #include &lt;stdio.h&gt; #include &lt;functional&gt; int n = 100; std::function&lt;int()&gt; f() { int &amp;m = n; return [m] () mutable -&gt; int { m += 123; return m; }; } int main() { int x = n; int y = f()(); int z = n; printf("%d %d %d\n", x, y, …

2
lambda宏如何创建lambda?
我在GitHub上找到了这段代码,但不太了解: #define lambda(ret_type, _body) ({ ret_type _ _body _; }) 然后: int (*max)(int, int) = lambda(int, (int x, int y) { return x &gt; y ? x : y; }); int max_value = max(1, 2); // max_value is 2 内的下划线是什么#define?它如何返回函数指针?

3
Lambda闭包左值可以作为右值参考参数传递
我发现lvaluelambda闭包始终可以作为rvalue函数参数传递。 请参见以下简单演示。 #include &lt;iostream&gt; #include &lt;functional&gt; using namespace std; void foo(std::function&lt;void()&gt;&amp;&amp; t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: passing a `lvalue` function object std::function&lt;void()&gt; fn2 = []{}; foo(fn2); // compile error return 0; } …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.