В этом упрощенном примере я делаю propertyWrapper объекта UInt для хранения натурального числа (целое число> 0).Мой собственный пример использует более сложный фильтр, но это показывает проблему.Вместо того, чтобы найти обходной путь, суть вопроса заключается в том, чтобы пролить свет на непонятную (для меня) ошибку.
При назначении простого UInt в списке появляется сообщение об ошибке.
Использование свойства wrappedValue, как показано в следующей строке, работает нормально.Но, конечно, весь смысл обертки в том, чтобы иметь возможность рассматривать его как UInt, возвращаемый get?
Ошибка "невозможно присвоить значение типа 'NonZero' типу 'UInt", по-видимому, подрывает всю точку типа оболочки.Что я недопонимаю?Xcode 11.0
import Foundation
@propertyWrapper
struct NonZero {
private let myNumber : UInt
init(n : UInt)
{
if ( n == 0){fatalError(" cannot be 0")}
myNumber = n
}
var wrappedValue: UInt {
get { return myNumber }
}
}
struct Nums {
var num :UInt
init( nz: NonZero){
num = nz //error message "cannot assign value of type 'NonZero' to type 'UInt"
num = nz.wrappedValue //no error
}
}