入力する方法は複数の制約にパラメータを制約していますか?具体的には、オブジェクトは、プロトコルDecodableまたは一般的なDecodableを持つ配列である可能性があります。複数の型制約
ので、このように:
func myFunc(obj:Decodable, Array<Decodable>)
私は複数の制約でジェネリックを使用して、このようにそれに近づいて試してみたが、それはされていない配列、protocalsすることの両方が必要です。また、これはOR制約ではなく、ORではなく、MartinRが指摘しているとおりです。
func myFunc<T where T:Decodable, T:Array<Decodable>>(obj:T)
これは配列がプロトコルではないため失敗します。パラメータが2つのタイプのうちの1つになるように制約する方法はありますか?
私は実行時にエラーをスローするチェックを避けようとしていますが、それは私には悪い習慣のようです。
私は以前これを試したことがありますし、それを行う方法が見つかりませんでした。それはできないとは言えませんが、私は方法を見つけることができませんでした。 –
型やプロトコルのために、パラメータを 'T1' *や*' T2'に制約することはできません。 –
@MartinR上記を使用して、明快に調整するプロトコルを使用することができます – steventnorris