2017-08-01 6 views
2

私は何の配列を受け入れ機能書いています:迅速にタプルを受け入れるために使用する正しいパラメータタイプは何ですか?

func getRandomMember(from:[Any]) { 

をしかし、私はそれを渡すときタプルの配列:

getRandomMember([(1,1), (-1,1), (-1,-1), (1, -1)]) 

のXcodeは私に語ったことは誤りである:

[(Int, Int)] is not convertable to [Any]. 

AnyObjectも動作しません。では、どのタイプをパラメータタイプとして使用する必要がありますか?

+2

これにはおそらくSwiftジェネリックを使うべきでしょうか? – Cesare

+0

もしあなたが 'Any'を使っているのであれば、あなたはそれをどうにかしています。 – Sulthan

答えて

3

私がプレイグラウンドでコードをテストすると、正常に動作します。私は引数のラベルfromを追加するのを忘れたと思います。

getRandomMember(from: [(1,1), (-1,1), (-1,-1), (1, -1)]) 

しかし、上記の動作はありますが、ここではジェネリックを使用する方が良い方法だと思います。

func getRandomMemeber<T>(from array: [T]) -> T 

このようにして、返された値を必要な型にキャストする必要はありません。

+0

いいえ、私は自分のコードに 'from'を追加することを忘れませんでした。それは奇妙な、おそらく迅速なバージョンに関連している?とにかく、ジェネリックスは正常に動作します。ありがとう! – NeoWang

関連する問題