Java的lambda表达式与斯威夫特的功能类型比较

雷神 :

在斯威夫特,功能类型被视为一等公民,可以在任何地方使用,因为任何其他类型。其语法是直接的,并且可以容易地理解和使用。

在另一方面,Java的不支持的功能编程通过lambda表达式,但总的来说,我发现它不太直观,更难理解,而且似乎更加严格,相比雨燕的功能类型。

我的问题是,因为斯威夫特的功能类型和Java的lambda表达式的目的是实现函数式编程,有什么,斯威夫特的功能类型可以做,但Java的lambda表达式不能?或者,他们都同样强大?

kgeorgiy:

这是不正确的比较Java的lambda表达式(实现)和斯威夫特的功能型(类型)。但它是可以比较Java的lambda来雨燕的闭包而斯威夫特的功能型Java的功能接口

闭包是不是lambda表达式更加强大:

  1. (大)罩可以捕捉不恒定的变量,即 G

    func makeIncrementer(forIncrement amount: Int) -> () -> Int {
        var runningTotal = 0
        return () -> Int {
            runningTotal += amount
            return runningTotal
        }
    }
    
  2. (未成年人)瓶盖支持速记参数的名称,如

    reversedNames = names.sorted(by: { $0 > $1 } )
    
  3. (次要)尾随封闭件的支持,例如

    someFunctionThatTakesAClosure() {
        // trailing closure's body goes here
    }
    

从另一方面,功能接口比功能类型更加强大。他们允许声明额外的方法,例如java.util.Comprator接口定义了一堆的比较方便的构建方法,如reversedthenComparing

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章