var
とlet
でプロパティを実装すると、実装する構造体にと入力された変数が割り当てられたときの動作が異なります。Swiftプロトコル拡張 `var {get}`オーバーライド実装の `let`
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の動作ですか?
またはhttp://bugs.swift.org – jtbandes