您可以使用一流的函数将变量设置为具有默认参数的函数吗?

时间:2019-05-14 10:07:22

标签: ios swift

我想保存一个带有两个参数的函数作为一个只有一个参数的函数。我知道我是通过函数式编程学到的,但是我不记得方法名称或实现方法。

示例:类似这样的方法:

func add (a: Int, b: Int) {
    return a + b
}

您可以操纵和保存一个新方法,即只能将a递增1:

let increment = add(b:1)

print(increment(a: 4))
// prints 5

可以迅速做到吗?

3 个答案:

答案 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)

您正在寻找Default Parameter Values

您可以为参数分配默认值。调用此函数时,如果将值传递给参数,则将使用传递的值,否则将使用默认值。要使用默认值,可以避免在函数调用中使用参数

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