try 编写属性包装,如下所示:
@propertyWrapper struct LessThanSixteen<String> {
var value: String
var wrappedValue: String {
get { value }
// set { value = }
}
init(wrappedValue: String) {
var x = wrappedValue
self.value = (wrappedValue.count < 16) ? wrappedValue : wrappedValue.dropLast(wrappedValue.count - 16)
}
}
第self.value = (wrappedValue.count < 16) ? wrappedValue : wrappedValue.dropLast(wrappedValue.count - 16)
行抛出了2个错误."‘字符串’类型的值没有成员‘count’","‘字符串’类型的值没有成员‘dropLast’".我不明白为什么编译器会这么说.
如果我在@propertyWrapper
struct 之外编写以下代码:
let someString = "this string is more than 16 characters long"
let someSubstring = String(someString.dropLast(someString.count - 16))
我没有收到这样的编译器错误.我不明白为什么我不能在属性包装器中执行该代码.