我试图想出如何将具有多个参数的函数分配给变量。如果它只是一个简单的功能,它可以正常工作:
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)
?
答案 0 :(得分:4)
函数handleShip(captain: Pirate, helmsman: Pirate, ship: Ship)
的类型实际上是(Pirate, Pirate, Ship)->()
,而不仅仅是(Pirate, Pirate, Ship)
。
相应地更改handleShipAlias
,您的代码编译得很好。
let handleShipAlias: (Pirate, Pirate, Ship)->() = handleShip
没有显式返回值的函数默认返回Void
(这是空元组的类型,()
),因为函数类型包含输入参数的类型加返回类型,您必须在表示函数的变量类型中包含Void
返回类型。