将具有多个参数的函数分配给变量

时间:2017-10-26 15:53:06

标签: swift closures

我试图想出如何将具有多个参数的函数分配给变量。如果它只是一个简单的功能,它可以正常工作:

func aFunc(val: Int) {
    print(val)
}

let alias = aFunc
alias(3)

但是我得到了一个错误:

func handleShip(captain: Pirate, helmsman: Pirate, ship: Ship) {
    print("Handing the ship")
}

func handleShip(helmsman: Pirate, ship: Ship) {
    print("Handling the ship")
}

let handleShipAlias: (Pirate, Pirate, Ship) = handleShip

我明白了:

  

对成员' handleShip的模糊提及(队长:舵手:船舶:)'

有没有办法引用handleShip(captain: Pirate, helmsman: Pirate, ship: Ship)

1 个答案:

答案 0 :(得分:4)

函数handleShip(captain: Pirate, helmsman: Pirate, ship: Ship)的类型实际上是(Pirate, Pirate, Ship)->(),而不仅仅是(Pirate, Pirate, Ship)

相应地更改handleShipAlias,您的代码编译得很好。

let handleShipAlias: (Pirate, Pirate, Ship)->() = handleShip

没有显式返回值的函数默认返回Void(这是空元组的类型,()),因为函数类型包含输入参数的类型加返回类型,您必须在表示函数的变量类型中包含Void返回类型。