Tag: closures

使用functional-java为Java生产项目添加闭包有多安全?

我很想在Java中使用闭包。 我已经读过它们可能会也可能不会成为Java 7.但是一个名为functional-java的开源项目已经实现了包括闭包在内的function特性。 在企业生产应用程序中使用这样的库有多安全? 是否有更好的方法来向Java添加闭包?

java允许使用function接口作为方法吗?

使用新的java lambdas和function接口的概念,是否可以将这些function接口视为方法? interface Func { void execute(int i); } void call(Func f) { f(1); //instead of f.execute(1); } 我发现了很多关于实际lambda表达式语法的信息,但没有任何相关信息。

在java 8中的groovy和闭包中的闭包(lambda表达式)?

给予doSomething(Function foo) { println foo(2) } Groovy: doSomething( { it*it } as Function ) Java: doSomething( (x) -> x*x ) 这两者有什么区别吗?

Lambda表达式和高阶函数

如何使用带有闭包的Java 8编写支持一种方法,该方法将函数作为参数并将函数作为值返回?

与Java内部类相比,Scala闭包 – >最终VS var

我首先问过这个关于在Java中使用带有匿名内部类的final问题: 为什么我们使用带有匿名内部类的final关键字? 我实际上正在阅读马丁奥德斯基的Scala书。 似乎Scala简化了很多Java代码,但对于Scala闭包,我注意到了一个显着的差异。 在Java中,我们使用匿名内部类“模拟”闭包,捕获最终变量(将被复制到堆上而不是堆栈中),在Scala中我们可以创建一个可以捕获val的闭包,但是也是一个var,因此在闭包调用中更新它! 所以我们可以使用没有final关键字的Java匿名内部类! 我还没读完这本书,但是现在我没有找到关于这种语言设计选择的足够信息。 有人能告诉我为什么马丁奥德斯基,他似乎真正关心function的副作用,选择闭合能够捕获val和var ,而不仅仅是val ? Java和Scala实现的优点和缺点是什么? 谢谢 相关问题: 使用Scala闭包,何时捕获的变量开始存在于JVM堆上?

是否有可能在Java 8中创建由递归定义的惰性(更好的无限)集合?

我可以创建一个递归闭包: static IntUnaryOperator fibo; fibo = (i) -> i<2 ? 1 : fibo.applyAsInt(i-1)+ fibo.applyAsInt(i-2); 但当然,它只是作为一个例子。 相反,如果我创建了一个惰性/无限列表/流,则可以以非常好的方式使用递归:不必多次计算任何成员。 我想到了以下结构: IntStream fi; fi=IntStream.iterate(0, i -> fi[i-1]+fi[i-2]); 但是那样它就行不通了 – 我无法通过索引从流中获取一个项目。另一个问题是,如果我以后再沿着流,它将被消耗,我不能重复使用它。 如果我将流复制到List,它就不再是懒惰了。 因此,我需要一些我可以通过索引解决的构造。 作为fibo(i) 。 编辑。 显然,解决方案不能是流,因为流不能使用两次。 我不想在每次调用F(i)时重复所有计算。

Java Lambdas和Closures

我听说lambdas即将到达你附近的Java(J8)。 我在一些博客上找到了一个例子: SoccerService soccerService = (teamA, teamB) -> { SoccerResult result = null; if (teamA == teamB) { result = SoccerResult.DRAW; } else if(teamA < teamB) { result = SoccerResult.LOST; } else { result = SoccerResult.WON; } return result; }; 所以马上就是这样: teamA和teamB在哪里打字? 或者不是它们(就像一些奇怪的generics)? lambda是一种闭包,还是反过来? 这会给我一个典型的匿名function有什么好处?

是否有类似LINQ for Java的东西?

开始用C#学习LINQ。 特别是LINQ to Objects和LINQ to XML。 我非常喜欢LINQ的强大function。 我了解到有一种叫做JLINQ的Jscript实现。 另外(正如Catbert发布​​的那样)Scala将拥有LINQ 你知道LINQ或类似的东西是否会成为Java 7的一部分吗? 更新:2008年有趣的post – LINQ for Java工具

如何在.NET中实现匿名方法中的捕获值

我很好奇.NET实现及其背后的决定。 例如,在Java中,匿名类中使用的所有捕获值都必须是最终的。 这个要求似乎在.NET中被删除了。 此外,与参考类型相比,值类型的捕获值的实现是否存在差异? 谢谢