2017-10-26 11 views
1

変数に複数のパラメータを持つ関数を割り当てる方法を考えようとしています。それが正常に動作し、単純な機能だとき:複数のパラメータを持つ関数を変数に代入する

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)

答えて

4

handleShip(captain: Pirate, helmsman: Pirate, ship: Ship)の種類は、実際には(Pirate, Pirate, Ship)->()であり、(Pirate, Pirate, Ship)ではありません。

これに応じてhandleShipAliasを変更すると、コードが正常にコンパイルされます。

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

関数明示的な戻り値のデフォルトなし(空のタプルにtypealiasで、()Voidを返すことにし、機能の種類は、入力引数に加えて戻り値の型の種類で構成されているので、あなたが持っています関数を表す変数の型にVoid戻り値の型を含める必要があります。

関連する問題