と を使用したプロパティの実装は、実装する構造体が as 型の変数に割り当てられている場合、動作が異なりvar
ます。let
protocol
protocol Req {
var path: String? { get }
}
extension Req {
var path: String? { return "Req" }
}
struct LetReq: Req {
let path = "LetReq"
}
struct VarReq: Req {
var path: String? { return "VarReq" }
}
var req: Req!
req = VarReq()
req.path // prints "VarReq"
req = LetReq()
req.path // prints "Req" not "LetReq" which seems very awkward.
これは Swift の設計された動作ですか?