如何使用$获得属性包装器值

时间:2019-08-19 10:54:17

标签: swift

当我使用$访问属性包装器结构时,编译器会发出错误消息。

我正在使用Xcode 11 beta5。并且我测试了一些有关属性包装器的代码。

    class Resolver {
        static var root = Resolver()
        func resolve<Service>(_ serviceType: Service.Type, name: String?) -> Service? {
            return true as? Service
        }
    }

    @propertyWrapper
    struct Injected<Service> {
        private var service: Service?
        public var container: Resolver?
        public var name: String?
        public var wrappedValue: Service {
            mutating get {
                if service == nil {
                    service = (container ?? Resolver.root).resolve(
                        Service.self,
                        name: name
                    )
                }
                return service!
            }
            mutating set {
                service = newValue
            }
        }
    }

    struct AAA {
        @Injected var flag: Bool

        init() {
            print(flag)
            $flag.name = 123
        }
    }

    AAA()

我希望代码可以编译,但是在“ $ flag.name = 123”中出现错误

P.S。 Xcode beta 2可以使用相同的代码

1 个答案:

答案 0 :(得分:0)

这已从$更改为_

_flag.name = 123应该可以工作