在斯威夫特,功能类型被视为一等公民,可以在任何地方使用,因为任何其他类型。其语法是直接的,并且可以容易地理解和使用。
在另一方面,Java的不支持的功能编程通过lambda表达式,但总的来说,我发现它不太直观,更难理解,而且似乎更加严格,相比雨燕的功能类型。
我的问题是,因为斯威夫特的功能类型和Java的lambda表达式的目的是实现函数式编程,有什么,斯威夫特的功能类型可以做,但Java的lambda表达式不能?或者,他们都同样强大?
这是不正确的比较Java的lambda表达式(实现)和斯威夫特的功能型(类型)。但它是可以比较Java的lambda来雨燕的闭包。而斯威夫特的功能型Java的功能接口。
闭包是不是lambda表达式更加强大:
(大)罩可以捕捉不恒定的变量,即 G
func makeIncrementer(forIncrement amount: Int) -> () -> Int {
var runningTotal = 0
return () -> Int {
runningTotal += amount
return runningTotal
}
}
(未成年人)瓶盖支持速记参数的名称,如
reversedNames = names.sorted(by: { $0 > $1 } )
(次要)尾随封闭件的支持,例如
someFunctionThatTakesAClosure() {
// trailing closure's body goes here
}
从另一方面,功能接口比功能类型更加强大。他们允许声明额外的方法,例如java.util.Comprator接口定义了一堆的比较方便的构建方法,如reversed
和thenComparing
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句