Questions tagged «lambda»

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

2
c ++ 11 lambda是否捕获不使用的变量?
当我[=]用来表示我希望通过lambda中的值捕获所有局部变量时,这是否会导致函数中的所有局部变量都被复制,或者仅仅是lambda使用的所有局部变量? 因此,例如,如果我有: vector<int> my_huge_vector(100000); int my_measly_int; some_function([=](int i){ return my_measly_int + i; }); 即使我不在lambda中使用my_huge_vector,它也会被复制吗?
123 c++  lambda  c++11 

5
为什么某些C#lambda表达式可编译为静态方法?
如您在下面的代码中看到的,我已将Action<>对象声明为变量。 有人能让我知道为什么此动作方法委托的行为类似于静态方法吗? 为什么返回true以下代码? 码: public static void Main(string[] args) { Action<string> actionMethod = s => { Console.WriteLine("My Name is " + s); }; Console.WriteLine(actionMethod.Method.IsStatic); Console.Read(); } 输出:
122 c#  .net  reflection  lambda 


10
复制流,以避免“流已被操作或关闭”
我想复制一个Java 8流,以便可以处理两次。我可以collect列出并从中获得新的信息流; // doSomething() returns a stream List<A> thing = doSomething().collect(toList()); thing.stream()... // do stuff thing.stream()... // do other stuff 但是我认为应该有一种更有效/更优雅的方法。 有没有一种方法可以复制流而不将其转换为集合? 我实际上正在使用Eithers 流,因此想要先处理左侧投影,然后再移至右侧投影并以另一种方式处理。有点像这样(到目前为止,我被迫使用这种toList技巧)。 List<Either<Pair<A, Throwable>, A>> results = doSomething().collect(toList()); Stream<Pair<A, Throwable>> failures = results.stream().flatMap(either -> either.left()); failures.forEach(failure -> ... ); Stream<A> successes = results.stream().flatMap(either -> either.right()); successes.forEach(success -> ... …

9
除了保存代码行以外,lambda表达式还有什么用吗?
除了保存代码行以外,lambda表达式还有什么用吗? lambdas是否提供任何特殊功能来解决难以解决的问题?我所看到的典型用法是代替编写此代码: Comparator<Developer> byName = new Comparator<Developer>() { @Override public int compare(Developer o1, Developer o2) { return o1.getName().compareTo(o2.getName()); } }; 我们可以使用lambda表达式来缩短代码: Comparator<Developer> byName = (Developer o1, Developer o2) -> o1.getName().compareTo(o2.getName());
120 java  lambda  java-8 

8
在Kotlin的`forEach`中的`break`和`continue`
Kotlin具有很好的迭代功能,例如forEach或repeat,但是我无法使breakand continue运算符与它们一起使用(本地和非本地): repeat(5) { break } (1..5).forEach { continue@forEach } 目标是使用功能语法尽可能接近的方式模仿常规循环。在某些较旧的Kotlin版本中肯定是有可能的,但是我很难重现该语法。 问题可能是带有标签(M12)的错误,但是我认为第一个示例仍然可以工作。 在我看来,我已经阅读过有关特殊技巧/注释的内容,但是找不到关于该主题的任何参考资料。可能如下所示: public inline fun repeat(times: Int, @loop body: (Int) -> Unit) { for (index in 0..times - 1) { body(index) } }
119 loops  foreach  lambda  kotlin 

6
在Java 8中,带有2个箭头的lambda是什么意思?
我之前阅读过一些Java 8教程。 现在我遇到以下主题: Java是否支持Currying? 在这里,我看到以下代码: IntFunction<IntUnaryOperator> curriedAdd = a -> b -> a + b; System.out.println(curriedAdd.apply(1).applyAsInt(12)); 我了解此示例包含2个元素,但无法理解其构造: a -> b -> a + b; 根据表达式的左侧,该行应实现以下功能: R apply(int value); 在此之前,我只遇到一个箭头就遇到了lambda。
118 java  lambda  java-8  currying 

3
如何使用Lambda表达式检查元素是否存在?
具体来说,我有TabPane,我想知道其中是否包含具有特定ID的元素。 因此,我想使用Java中的lambda表达式来做到这一点: boolean idExists = false; String idToCheck = "someId"; for (Tab t : tabPane.getTabs()){ if(t.getId().equals(idToCheck)) { idExists = true; } }
118 java  java-8  lambda 

5
有没有一种方法可以指定“空” C#lambda表达式?
我想声明一个“空” lambda表达式,它不会执行任何操作。有没有一种方法可以执行这种操作而不需要该DoNothing()方法? public MyViewModel() { SomeMenuCommand = new RelayCommand( x => DoNothing(), x => CanSomeMenuCommandExecute()); } private void DoNothing() { } private bool CanSomeMenuCommandExecute() { // this depends on my mood } 我这样做的意图只是控制WPF命令的启用/禁用状态,但这是一个问题。也许对于我来说还为时过早,但我想必须有一种方法可以x => DoNothing()像这样以某种方式声明lambda表达式来完成同一件事: SomeMenuCommand = new RelayCommand( x => (), x => CanSomeMenuCommandExecute()); 有什么办法可以做到这一点?似乎没有必要采取无所事事的方法。
118 c#  lambda 

9
将.net Func <T>转换为.net Expression <Func <T >>
使用方法调用从lambda到Expression很容易... public void GimmeExpression(Expression&lt;Func&lt;T&gt;&gt; expression) { ((MemberExpression)expression.Body).Member.Name; // "DoStuff" } public void SomewhereElse() { GimmeExpression(() =&gt; thing.DoStuff()); } 但是我只想在少数情况下将Func变成表达式... public void ContainTheDanger(Func&lt;T&gt; dangerousCall) { try { dangerousCall(); } catch (Exception e) { // This next line does not work... Expression&lt;Func&lt;T&gt;&gt; DangerousExpression = dangerousCall; var nameOfDanger = ((MemberExpression)dangerousCall.Body).Member.Name; throw new DangerContainer( …
118 c#  .net  lambda  expression  func 

4
如何使用新的computeIfAbsent函数?
我非常想使用Map.computeIfAbsent,但是自从lambdas进入本科以来已经太久了。 几乎直接来自文档:它给出了做事的旧方法的示例: Map&lt;String, Boolean&gt; whoLetDogsOut = new ConcurrentHashMap&lt;&gt;(); String key = "snoop"; if (whoLetDogsOut.get(key) == null) { Boolean isLetOut = tryToLetOut(key); if (isLetOut != null) map.putIfAbsent(key, isLetOut); } 和新方法: map.computeIfAbsent(key, k -&gt; new Value(f(k))); 但在他们的示例中,我认为我不太“了解”。我将如何转换代码以使用新的lambda表达方式?

10
如何从List <T>中获取第n个项目?
我正在使用.NET 3.5,并且希望能够n从列表中获取每个* *项目。我不介意使用lambda表达式还是LINQ实现它。 编辑 看起来这个问题引起了很多争论(这是一件好事,对吧?)。我学到的主要内容是,当您认为自己知道做某事的所有方法(甚至如此简单)时,请三思!
114 c#  linq  list  lambda 

6
如何使用Lambda表达式调试stream()。map(...)?
在我们的项目中,我们正在迁移到Java 8,并且正在测试它的新功能。 在我的项目中,我使用Guava谓词和函数使用Collections2.transform和过滤和转换某些集合Collections2.filter。 在此迁移中,我需要将番石榴代码更改为java 8更改。因此,我正在做的更改是: List&lt;Integer&gt; naturals = Lists.newArrayList(1,2,3,4,5,6,7,8,9,10,11,12,13); Function &lt;Integer, Integer&gt; duplicate = new Function&lt;Integer, Integer&gt;(){ @Override public Integer apply(Integer n) { return n * 2; } }; Collection result = Collections2.transform(naturals, duplicate); 至... List&lt;Integer&gt; result2 = naturals.stream() .map(n -&gt; n * 2) .collect(Collectors.toList()); 使用番石榴,我可以很轻松地调试代码,因为我可以调试每个转换过程,但是我关心的是例如如何调试 .map(n -&gt; n*2)。 使用调试器,我可以看到一些类似的代码: …
114 java  debugging  lambda  java-8 

4
对事件处理程序使用lambda表达式
我目前有一个页面,其声明如下: public partial class MyPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //snip MyButton.Click += (o, i) =&gt; { //snip } } } 我最近才从1.1迁移到.NET 3.5,因此我习惯于在Page_Load之外编写事件处理程序。我的问题是;为此使用lambda方法时,应该注意什么性能缺陷或陷阱吗?我更喜欢它,因为它肯定更简洁,但是我不想牺牲性能来使用它。谢谢。
114 c#  performance  events  lambda 

3
通用Lambda在C ++ 14中如何工作?
通用Lambda如何auto在C ++ 14标准中工作(关键字作为参数类型)? 它是否基于C ++模板,其中每个不同的参数类型,编译器都会生成具有相同主体但被替换类型的新函数(编译时多态性)?或者它更类似于Java的泛型(类型擦除)? 代码示例: auto glambda = [](auto a) { return a; };
114 c++  lambda  auto  c++14 

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.