Oops, thought the mailing list software was supposed to catch this. Unsubscribed you, Howard; sorry for the spurious message, everyone else.
-Jordan > On Jul 14, 2017, at 10:03, Howard Perlman via swift-users > <swift-users@swift.org> wrote: > > Unsubscribe > > > From: "swift-users-requ...@swift.org" <swift-users-requ...@swift.org> > To: swift-users@swift.org > Sent: Friday, July 14, 2017 12:57 PM > Subject: swift-users Digest, Vol 20, Issue 13 > > Send swift-users mailing list submissions to > swift-users@swift.org <mailto:swift-users@swift.org> > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.swift.org/mailman/listinfo/swift-users > <https://lists.swift.org/mailman/listinfo/swift-users> > or, via email, send a message with subject or body 'help' to > swift-users-requ...@swift.org <mailto:swift-users-requ...@swift.org> > > You can reach the person managing the list at > swift-users-ow...@swift.org <mailto:swift-users-ow...@swift.org> > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of swift-users digest..." > > > Today's Topics: > > 1. Swift 4 emulating Decoder behaviour (Joanna Carter) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Thu, 13 Jul 2017 20:46:20 +0200 > From: Joanna Carter <joa...@carterconsulting.org.uk > <mailto:joa...@carterconsulting.org.uk>> > To: swift-users@swift.org <mailto:swift-users@swift.org> > Subject: [swift-users] Swift 4 emulating Decoder behaviour > Message-ID: > <a8de64e2-5360-4b35-87d2-69f3f5b56...@carterconsulting.org.uk > <mailto:a8de64e2-5360-4b35-87d2-69f3f5b56...@carterconsulting.org.uk>> > Content-Type: text/plain; charset=utf-8 > > Greetings > > I notice that, with Swift 4, I can decode an object like this : > > • let retrievedSpot = try decoder.decode(ParkingSpot.self, from: > retrievedData) > > And that will return a ParkingSpot, as expected, into retrievedSpot. > > However, I thought I would try the same technique with one of my pet projects… > > I have a protocol and an implementing struct : > > • public protocol PropertyProtocol > • { > • static var propertyType: Any.Type { get } > • > • var untypedValue: Any? { get } > • } > • > • public struct Property<valueT : DefaultValueProvider> : > PropertyProtocol > • { > • public static var propertyType: Any.Type > • { > • return valueT.self > • } > • > • public var untypedValue: Any? > • { > • return value > • } > • > • public var value = valueT() > • } > > Now, I want to be able to use a "factory" method to create an instance of > Property<T>, bound to its parameter type. So, I followed the same principal > as Decoder : > > • struct PropertyFactory > • { > • static func createProperty<T>(_ type: T.Type) -> PropertyProtocol > where T : DefaultValueProvider > • { > • return type.createProperty() > • } > • } > > DefaultValueProvider is defined as follows and String is extended to conform > to it : > > • public protocol DefaultValueProvider > • { > • init() > • } > • > • extension String : DefaultValueProvider { } > > Now, this works fine if I pass a known type : > > • let pproperty = PropertyFactory.createProperty(String.self) > > But, if I hold the type to be passed in in an Any.Type or > DefaultValueProvider.Type variable, then doing this : > > • let type: Any.Type = String.self > • > • if let propertyType = type as? DefaultValueProvider.Type > • { > • let p = PropertyFactory.createProperty(propertyType) > • > • … > > Fails to compile with the message : Cannot invoke 'createProperty' with an > argument list of type '(DefaultValueProvider.Type)' > > Likewise Decoder.decode(…) will not accept storing the type in an Any.Type or > Decodable.Type variable. > > I find this odd and perplexing. Is this a known issue or has nobody yet > realised that this could be useful ? > > Joanna > > -- > Joanna Carter > Carter Consulting > > ------------------------------ > > _______________________________________________ > swift-users mailing list > swift-users@swift.org <mailto:swift-users@swift.org> > https://lists.swift.org/mailman/listinfo/swift-users > <https://lists.swift.org/mailman/listinfo/swift-users> > > > End of swift-users Digest, Vol 20, Issue 13 > ******************************************* > > > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users