Swift_Programming_Language中有这么一段代码。
protocol FullyNamed {
var fullName: String { get }
}
struct Person: FullyNamed {
var fullName: String
}
let john = Person(fullName: "John Appleseed")
// john.fullName is "John Appleseed"
fullName
是一个只读的属性,但是在Person
将fullName实现成了可读可写的。
疑惑的是在协议中规定属性为只读并没有什么作用。
我在实现的时候并没有什么约束,即使是只读的,我也可以实现为可读可写。
仅仅是在协议中将属性规定为可读可些的时候你不能把它实现成只读的。
当声明 instance 为 protocol 类型的时候,只读属性便会生效.例如let john: FullyNamed = Person(fullName: "John Appleseed")