Questions tagged «lambda»

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


6
(lambda)函数闭包捕获了什么?
最近,我开始玩弄Python,并且在闭包的工作方式中遇到了一些奇怪的事情。考虑以下代码: adders=[0,1,2,3] for i in [0,1,2,3]: adders[i]=lambda a: i+a print adders[1](3) 它构建了一个简单的函数数组,这些函数接受单个输入并返回该输入加数字后的结果。这些函数在for循环中构造,其中迭代器i从0到运行3。对于这些数字中的每一个,lambda都会创建一个函数,将其捕获i并将其添加到函数的输入中。最后一行使用参数作为参数调用第二个lambda函数3。令我惊讶的产量6。 我期望一个4。我的推论是:在Python中,一切都是对象,因此每个变量都是指向它的指针。为创建lambda闭包时i,我希望它存储一个指向当前由指向的整数对象的指针i。这意味着,当i分配一个新的整数对象时,它不应影响先前创建的闭包。可悲的是,adders在调试器中检查该阵列是否可以完成。所有的lambda功能指的最后一个值i,3,其结果adders[1](3)返回6。 这让我想知道以下几点: 闭包到底捕获了什么? 用最优雅的方法说服lambda功能捕获当前值,i而该方法在i更改其值时不会受到影响?
249 python  lambda  closures 

7
合并两个表达式(Expression <Func <T,bool >>)
我有两个类型的表达式,Expression&lt;Func&lt;T, bool&gt;&gt;我想对它们进行“或”,“或”或“非”运算,并获得相同类型的新表达式 Expression&lt;Func&lt;T, bool&gt;&gt; expr1; Expression&lt;Func&lt;T, bool&gt;&gt; expr2; ... //how to do this (the code below will obviously not work) Expression&lt;Func&lt;T, bool&gt;&gt; andExpression = expr AND expr2
248 c#  linq  lambda  expression 

3
Java 8 Lambda,Function.identity()或t-> t
Наэтотвопросестьответына 堆栈溢出нарусском:Лямбдыв爪哇8,чтолучшеиспользовать - Function.identity()илиT-&gt;吨? 我对Function.identity()方法的使用有疑问。 想象以下代码: Arrays.asList("a", "b", "c") .stream() .map(Function.identity()) // &lt;- This, .map(str -&gt; str) // &lt;- is the same as this. .collect(Collectors.toMap( Function.identity(), // &lt;-- And this, str -&gt; str)); // &lt;-- is the same as this. 是否有任何理由您应使用Function.identity()代替str-&gt;str(反之亦然)。我认为第二个选项更具可读性(当然是个人喜好了)。但是,有没有“真正的”理由为什么应该优先考虑呢?

12
将Java 8的Optional与Stream :: flatMap一起使用
新的Java 8流框架和新朋友创建了一些非常简洁的Java代码,但是我遇到了一个看似简单的情况,很难做到简洁。 考虑List&lt;Thing&gt; things和方法Optional&lt;Other&gt; resolve(Thing thing)。我想将Things 映射到Optional&lt;Other&gt;s并获得第一个Other。显而易见的解决方案是使用things.stream().flatMap(this::resolve).findFirst(),但flatMap要求您返回一个流,并且Optional没有stream()方法(或者是a Collection或提供一种将其转换为或将其视为a的方法Collection)。 我能想到的最好的方法是: things.stream() .map(this::resolve) .filter(Optional::isPresent) .map(Optional::get) .findFirst(); 但这对于一个很常见的案例来说似乎太漫长了。有人有更好的主意吗?

4
Java 8流:多个过滤器与复杂条件
有时您想过滤Stream具有多个条件的a: myList.stream().filter(x -&gt; x.size() &gt; 10).filter(x -&gt; x.isCool()) ... 或者你可以做同样的复杂条件和单 filter: myList.stream().filter(x -&gt; x.size() &gt; 10 &amp;&amp; x -&gt; x.isCool()) ... 我的猜测是第二种方法具有更好的性能特征,但我不知道。 第一种方法赢得了可读性,但是哪种性能更好?


19
将Java Stream过滤为1个且只有1个元素
我正在尝试使用Java 8 Stream来查找中的元素LinkedList。但是,我想保证过滤条件只有一个匹配项。 采取以下代码: public static void main(String[] args) { LinkedList&lt;User&gt; users = new LinkedList&lt;&gt;(); users.add(new User(1, "User1")); users.add(new User(2, "User2")); users.add(new User(3, "User3")); User match = users.stream().filter((user) -&gt; user.getId() == 1).findAny().get(); System.out.println(match.toString()); } static class User { @Override public String toString() { return id + " - " + …

13
使用lambda表达式将对象列表从一种类型转换为另一种类型
我有一个foreach循环,读取一种类型的对象列表并产生另一种类型的对象列表。有人告诉我,lambda表达式可以达到相同的结果。 var origList = List&lt;OrigType&gt;(); // assume populated var targetList = List&lt;TargetType&gt;(); foreach(OrigType a in origList) { targetList.Add(new TargetType() {SomeValue = a.SomeValue}); } 任何帮助将不胜感激-我是lambda和linq的新手,谢谢,s
224 c#  generics  lambda 

2
我在哪里标记lambda表达式异步?
我有以下代码: private async void ContextMenuForGroupRightTapped(object sender, RightTappedRoutedEventArgs args) { CheckBox ckbx = null; if (sender is CheckBox) { ckbx = sender as CheckBox; } if (null == ckbx) { return; } string groupName = ckbx.Content.ToString(); var contextMenu = new PopupMenu(); // Add a command to edit the current Group contextMenu.Commands.Add(new …

8
将捕获lambda作为函数指针传递
是否可以将lambda函数作为函数指针传递?如果是这样,我肯定做错了什么,因为我遇到了编译错误。 考虑以下示例 using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; }; int main() { int x = 5; Decide greaterThanThree{ [x](){ return x &gt; 3; } }; return 0; } 当我尝试对此进行编译时,出现以下编译错误: In function 'int main()': 17:31: error: the value of 'x' is …


23
Java“此语言级别不支持lambda表达式”
我的Java 8的一些新功能和复制的例子测试伸到我的IDE(Eclipse的原话的IntelliJ)如图所示这里 Eclipse不提供对lambda表达式的任何支持,并且IntelliJ不断报告错误 此语言级别不支持Lambda表达式 我想知道我的安装,代码或支持是否存在问题。

6
匿名递归PHP函数
是否可以具有递归和匿名的PHP函数?这是我尝试使其工作,但未传递函数名称。 $factorial = function( $n ) use ( $factorial ) { if( $n &lt;= 1 ) return 1; return $factorial( $n - 1 ) * $n; }; print $factorial( 5 ); 我也知道这是实施阶乘的一种不好方法,这只是一个例子。


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.