2016-12-18 5 views
0

問題は本当に簡単です。これにより、セグメンテーションフォールトが発生します。プロトコルの拡張子に関数の名前を付けてセグメンテーションフォルトが発生する

extension Sequence { 

    func parallelForEach<T, R>(_ f: @escaping (T) -> R, completion: @escaping ([R]) ->()) where Iterator.Element == T { 
    } 

} 

明らかに、プロトコルエクステンションを書き込む方法はわかりません。誰か助けてください? :)

+1

コンパイルまたは実行中のセグメンテーションフォルト? – sbooth

+0

コンピレーション。申し訳ありませんが、私は後者が可能であることを知らなかった。 –

+1

もしコンパイラがクラッシュしているのであれば、それはバグです。あなたは間違いなくレーダーを提出して、Appleが問題を解決できるようにする必要があります。 – sbooth

答えて

0

私はジェネリック型Tが必要だったと思っていました。それはSequenceプロトコル内で幸いなことにIterator.Elementだけだったからです。

extension Sequence { 

    func parallelForEach<T, R>(_ f: @escaping (Iterator.Element) -> R, completion: @escaping ([R]) ->()) { 
    } 

} 

賞賛コンパイラがそれを好きではなかった理由をを説明することができます誰にも。それは明らかに非効率的ですが、なぜそれが間違っているべきですか?

関連する問題