2016-03-21 11 views
0

変数のデフォルト実装でプロトコル拡張を作成したい。このシンプルなコードはセグメンテーションフォルト11をスローし、それもまたプレイグラウンドでクラッシュします。 "set"キーワードが削除されても正常に動作しますが、このプロトコルを実装しているクラスで変数を "test"変数に設定するだけでは意味がありません ヒント?プロトコル拡張機能のデフォルト変数の実装でセグメント化エラーが発生する11

import UIKit 

protocol Prot { 
    var test: Int { get set } 
} 

extension Prot { 
    var test: Int { 
     return 1 
    } 
} 

struct TestStruct: Prot { 

} 

答えて

0

セグメント違反が発生した場合は、確かにSwiftコンパイラのバグです。 それでもうまくいても、このコードはコンパイルしてはいけません。

理由は、あなたの拡張子がtestのデフォルトgetを定義していますが、TestStructそのためsetを持っていないので、それはまだProtに準拠していないということです。 このバグが存在しない場合は、TestStruct doesn't conform to protocol Prot

psというエラーメッセージが表示されます。bugs.swift.orgにバグを送信すると、非常に単純な例であり、

+1

ありがとうございます、ありがとうございます、今は 'set'を追加して動作します。私はこのバグをSwiftプロジェクトに提出します –

関連する問題