2016-05-31 11 views
3

タプルは 'Any'タイプに変換できないようです。任意のタプルを表す型を知っていますか?任意のタプルを表す型?

func myFunc(x: Any) { 
} 

myFunc([12, 34, 56]) // OK 
myFunc((78, 90, "Hello")) // error: '((Int, Int, String)) ->()' is not convertible to '(Any) ->()' 

答えて

1

これはあなたのための可能性がある場合は、私が代わりに汎用的な機能を使用することをお勧めしたい:

func myFunc<T>(x: T) { 
} 

myFunc([12, 34, 56]) // OK 
myFunc((78, 90, "Hello")) // Fine too 

しかし、それはあなたがあなたの関数でやっている正確に何を知らずに言うのは難しいです。

1

あなたが明示的にキャストする必要がありそうですが、それは動作します:

func myFunc(x: Any) { 
} 

myFunc((78, 90, "Hello") as Any) 

私はタプルを持つことである関数にタプルを渡すのより一般的なケースとして必要であるとし(パラメータそのものではなく)関数の別々のパラメータに分解されます。

0

私はSwiftyBeaver's codeを見ました(ありがとう)。それから私は彼らの道でこれを書いた。

func myFunc(@autoclosure a:() -> Any) { 
    let x = a() 
} 

myFunc([12, 34, 56]) // OK 
myFunc((78, 90, "Hello")) // OK, too 
関連する問題