0

まず、プロトコル関数にデフォルトの引数値を提供することでコーディングを簡素化する方法を探しました。私はここで解決策を取り、それがもたらす可能性のある致命的なサブシーケンスを見つけました:

protocol Foo {
    func foo(_ a: Int)
}

extension Foo {
    func foo(_ a: Int = 4) {
        foo(a)
    }
}

struct FooImpl: Foo {
    // empty implementation
}

FooImpl().foo() // will go recursively forever and finally reach the stack limit

また、このコードはIBM Swift Sandboxでのコンパイルに失敗することがわかったので、xcode コンパイラーが原因である可能性があります。

4

2 に答える 2