gpt4 book ai didi

java - 比较 Java 的 lambda 表达式和 Swift 的函数类型

转载 作者:IT王子 更新时间:2023-10-29 05:23:40 27 4
gpt4 key购买 nike

在 Swift 中,函数类型被视为一等公民,可以像任何其他类型一样在任何地方使用。它的语法简单明了,易于理解和使用。

另一方面,Java 确实支持通过 lambda 表达式进行函数编程,但总的来说,与 Swift 的函数类型相比,我发现它更不直观、更难理解,而且似乎更具限制性。

我的问题是,既然Swift的函数类型和Java的lambda表达式的目的都是为了实现函数式编程,那么有什么是Swift的函数类型可以做到,而Java的lambda表达式做不到的呢?还是两者实力一样?

最佳答案

比较 Java 的 lambdas 是不正确的(实现)和 Swift 的 functional type (类型)。但是可以将 Java 的 lambda 与 Swifts 的 Closures 进行比较。 .和 Swift 的功能类型到 Java 的 functional interfaces .

闭包比 lambda 更强大:

  1. (major) 闭包可以捕获非常量变量,例如。克

    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
    }

另一方面,函数式接口(interface)比函数式类型更强大。它们允许声明额外的方法,例如java.util.Comparator定义了一组方便的比较器构建方法,例如 reversedthenComparing

关于java - 比较 Java 的 lambda 表达式和 Swift 的函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40459440/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com