Questions tagged «lambda»

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

9
Java 8中的多个空检查
我有下面的代码,对于多个空检查来说有点难看。 String s = null; if (str1 != null) { s = str1; } else if (str2 != null) { s = str2; } else if (str3 != null) { s = str3; } else { s = str4; } 因此,我尝试使用Optional.ofNullable如下所示的方法,但是如果有人阅读了我的代码,仍然很难理解。用Java 8最好的方法是什么 String s = Optional.ofNullable(str1) .orElse(Optional.ofNullable(str2) .orElse(Optional.ofNullable(str3) .orElse(str4))); 在Java …

4
std :: function如何实现?
根据我发现的消息来源,lambda表达式实际上是由编译器实现的,该编译器创建了一个带有重载函数调用运算符并将引用变量作为成员的类。这表明lambda表达式的大小是变化的,并且给定足够多的引用变量,大小可能会任意大。 的大小std::function应为固定,但必须能够包装任何类型的可调用对象,包括任何同类型的lambda。如何实施?如果std::function内部使用指向其目标的指针,那么在std::function复制或移动实例时会发生什么?是否涉及任何堆分配?
99 c++  c++11  lambda 


10
用委托或lambda包装秒表计时?
我正在写这样的代码,做一些快速而肮脏的计时: var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 1000; i++) { b = DoStuff(s); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); 肯定有一个方法来调用此位的计时码作为花式schmancy .NET 3.0的λ,而不是(上帝保佑)剪切和粘贴了几次和更换DoStuff(s)用DoSomethingElse(s)? 我知道可以做到这一点,Delegate但我想知道lambda方式。
95 c#  .net  delegates  lambda 

5
从Java中的lambda forEach()返回
我试图将一些for-each循环更改为lambda- forEach()方法,以发现lambda表达式的可能性。以下似乎是可能的: ArrayList<Player> playersOfTeam = new ArrayList<Player>(); for (Player player : players) { if (player.getTeam().equals(teamName)) { playersOfTeam.add(player); } } 带lambda forEach() players.forEach(player->{if (player.getTeam().equals(teamName)) {playersOfTeam.add(player);}}); 但是下一个无效: for (Player player : players) { if (player.getName().contains(name)) { return player; } } 带lambda players.forEach(player->{if (player.getName().contains(name)) {return player;}}); 最后一行的语法是否有问题,或者不可能从forEach()方法中返回?

8
捕获为函数指针的C ++ lambda
我在玩C ++ lambda及其隐式转换为函数指针。我的开始示例是将它们用作ftw函数的回调。这按预期工作。 #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback = [](const char *fpath, const struct stat *sb, int typeflag) -> int { cout << fpath << endl; return 0; }; int ret = ftw("/etc", callback, 1); return ret; } 修改它以使用捕获后: int main() { vector<string> …

5
如何使用LINQ将List <string>中的所有字符串转换为小写?
我昨天在StackOverflow上的其中一个响应中看到了一个代码片段,这引起了我的兴趣。就像这样: List&lt;string&gt; myList = new List&lt;string&gt; {"aBc", "HELLO", "GoodBye"}; myList.ForEach(d=&gt;d.ToLower()); 我希望可以使用它将myList中的所有项目转换为小写。但是,这不会发生...运行此命令后,myList中的大小写不变。 所以我的问题是,是否有一种方法可以使用LINQ和Lambda表达式以类似的方式轻松地遍历和修改列表的内容。 谢谢,马克斯
94 c#  linq  lambda  foreach 

5
正确使用Optional.ifPresent()
我试图了解Java 8中API 的ifPresent()方法Optional。 我有简单的逻辑: Optional&lt;User&gt; user=... user.ifPresent(doSomethingWithUser(user.get())); 但这会导致编译错误: ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here) 我当然可以做这样的事情: if(user.isPresent()) { doSomethingWithUser(user.get()); } 但是,这就像是一张混乱的null支票。 如果我将代码更改为此: user.ifPresent(new Consumer&lt;User&gt;() { @Override public void accept(User user) { doSomethingWithUser(user.get()); } }); 代码变得越来越脏,这让我想到了回到旧null支票。 有任何想法吗?
94 java  lambda  java-8  optional 

4
如何在Kotlin中创建匿名接口实例?
我有一个第三方Java库,该对象的接口如下: public interface Handler&lt;C&gt; { void call(C context) throws Exception; } 我如何像Java匿名类一样在Kotlin中简洁地实现它: Handler&lt;MyContext&gt; handler = new Handler&lt;MyContext&gt; { @Override public void call(MyContext context) throws Exception { System.out.println("Hello world"); } } handler.call(myContext) // Prints "Hello world"

14
每个人都在说什么“ Lambda”?
每个人都在说什么“ Lambda”?很多人似乎都喜欢它,但是我可以从中收集到的只是这是将很多代码行挤入一个表达式中的一种方式。 有人可以启发我了解它的真正价值吗?
93 lambda 


2
[=]在C ++中是什么意思?
我想知道是什么[=]?这是一个简短的例子 template &lt;typename T&gt; std::function&lt;T (T)&gt; makeConverter(T factor, T offset) { return [=] (T input) -&gt; T { return (offset + input) * factor; }; } auto milesToKm = makeConverter(1.60936, 0.0); 该代码如何与[]代替一起使用[=]? 我认为 std::function&lt;T (T)&gt; 是指(T)作为参数和返回类型获取的函数原型T?
93 c++  c++11  lambda 

1
使用+解决lambda的函数指针和std :: function上的模棱两可的重载
在以下代码中,对的第一次调用foo是不明确的,因此无法编译。 第二个+在lambda之前添加,解析为函数指针重载。 #include &lt;functional&gt; void foo(std::function&lt;void()&gt; f) { f(); } void foo(void (*f)()) { f(); } int main () { foo( [](){} ); // ambiguous foo( +[](){} ); // not ambiguous (calls the function pointer overload) } +这里的符号是什么?

2
C ++ 11 Lambda实现和内存模型
我想要一些有关如何正确考虑C ++ 11闭包以及std::function如何实现它们和如何处理内存的信息。 尽管我不相信过早的优化,但我确实有习惯在编写新代码时仔细考虑选择的性能影响。我还进行了大量的实时编程,例如在微控制器和音频系统上,以避免不确定的内存分配/重新分配暂停。 因此,我想更好地理解何时使用或不使用C ++ lambda。 我目前的理解是没有捕获的闭包的lambda就像C回调一样。但是,当通过值或引用捕获环境时,将在堆栈上创建一个匿名对象。当必须从函数返回值闭包时,将其包装在中std::function。在这种情况下,关闭内存会发生什么?它是从堆栈复制到堆吗?每当释放时,std::function就释放它std::shared_ptr吗,也就是说,它是否像引用一样计数? 我想象在一个实时系统中,我可以建立一个lambda函数链,将B作为连续参数传递给A,从而A-&gt;B创建处理管道。在这种情况下,A和B闭包将分配一次。虽然我不确定是将它们分配在堆栈还是堆上。但是总的来说,在实时系统中使用它似乎是安全的。另一方面,如果B构造了一些返回的lambda函数C,则C的内存将被重复分配和释放,这对于实时使用是不可接受的。 用伪代码,一个DSP循环,我认为它将是实时安全的。我要执行处理块A,然后执行B,其中A调用其参数。这两个函数都返回std::function对象,因此f将是一个std::function对象,其环境存储在堆中: auto f = A(B); // A returns a function which calls B // Memory for the function returned by A is on the heap? // Note that A and B may maintain a state // via mutable value-closure! for (t=0; …
92 c++  memory  lambda  c++11 

3
_(下划线)是保留关键字
我刚刚s在以下lambda表达式中替换为_: s -&gt; Integer.parseInt(s) Eclipse编译器说: '_'不应用作标识符,因为它是源级别1.8以后的保留关键字。 我没有在JLS§3.9词法结构/关键字中找到任何解释。
92 java  lambda  java-8 

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.