1

flattenSwift がジェネリックをどのように使用するかについて頭を悩ませるために、配列と関数をいじっています。

ただし、次のコードでは、一般的な「プレイグラウンドの実行中にエラーが発生しました」というポップアップが表示されますが、その理由はわかりません。

興味深いことに、コードをプロジェクトに入れてコンパイルしようとすると、コンパイラが segfault を起こします。

import Cocoa

var arr: [[Int]] = [[1,2], [3,4], [5,6]]

func flatten<S: SequenceType, SS: SequenceType, E where S.Generator.Element == SS, SS.Generator.Element == E>(seq: S) -> [E] {
    var result = [E]()

    for subseq: SS in seq {
        for elem: E in subseq {
            result += [elem]
        }
    }

    return result
}

var flattened = flatten(arr)
println(flattened)

誰かがこのようなものを見たことがありますか / 回避策を見つけましたか?

悲しいことに、これはベータ版の型推論の単なるバグかもしれないと思います:(

4

2 に答える 2