我想保存一个带有两个参数的函数作为一个只有一个参数的函数。我知道我是通过函数式编程学到的,但是我不记得方法名称或实现方法。
示例:类似这样的方法:
func add (a: Int, b: Int) {
return a + b
}
您可以操纵和保存一个新方法,即只能将a递增1:
let increment = add(b:1)
print(increment(a: 4))
// prints 5
可以迅速做到吗?
答案 0 :(得分:3)
似乎您正在寻找函数currying。这是早期版本中迅速解决的一部分,但已删除,因为它在编译器内部增加了太多的复杂性。 (就像在这里看到的:https://github.com/apple/swift-evolution/blob/master/proposals/0002-remove-currying.md)
我猜想最接近您的咖喱函数是如果您执行以下操作:
func add(_ x: Int) -> (Int) -> Int {
return { y in
y + x
}
}
有了这个你可以说:
let add2 = add(2)
print(add2(3)) // prints 5
答案 1 :(得分:0)
尝试一下
let increment = add(a: 2, b: 2)
print("\(increment += 1)")
答案 2 :(得分:0)
您可以为参数分配默认值。调用此函数时,如果将值传递给参数,则将使用传递的值,否则将使用默认值。要使用默认值,可以避免在函数调用中使用参数
func add(a: Int = 1, b: Int = 1) -> Int {
return a + b
}
print(add(a: 5, b: 5))//prints 10
print(add(a: 4))//prints 5
print(add(b: 4))//prints 5
print(add())//prints 2