考虑这个@ propertyWrapper:
@propertyWrapper struct Capitalized {
var wrappedValue: String {
didSet { wrappedValue = wrappedValue.capitalized }
}
init(wrappedValue: String) {
self.wrappedValue = wrappedValue.capitalized
}
}
这样使用:
struct User {
@Capitalized var userName: String
}
我的问题是:
为什么我需要用属性userName
指定类型注释.编译器是否足够聪明,可以推断出由于@Capitalized
的wrappedValue
类型是String
,所以属性userName
只能是String
类型.
如果我忽略了类型注释,就会得到编译器错误:
模式中缺少类型注释