It complains if I make it a let because computed properties must be var. Because it's a protocol, it can't be stored (even though it can be stored in the conforming type).
If I make it { get }, I can't set it in the extensions init() method. I guess I could make it private set (not sure of the syntax for that), but it still doesn't have let semantics. > On Aug 2, 2016, at 16:28 , David Sweeris <daveswee...@mac.com> wrote: > > If I understand things correctly, you *can* make uuid a let because you’re > allowed to set them (once) during init functions. > > - Dave Sweeris > >> On Aug 2, 2016, at 6:22 PM, Rick Mann via swift-users >> <swift-users@swift.org> wrote: >> >> I'm trying to define a protocol that has a read-only, immutable member >> "uuid" that can be set in the init() method, but I'm having trouble. I have >> this: >> >> protocol >> Element >> { >> var uuid : { get } >> } >> >> extension >> Element >> { >> init(...) >> { >> self.uuid = ... >> } >> } >> >> I can't make it let, because they're computed. >> >> I'm realizing from other stuff that I really can't have the init(...) method >> in the extension, anyway. But I'd really like to be able to specify a let >> member in the protocol. What's the best way to have that effect? >> >> In my semantics, an Element has a uniquely-assigned uuid. It might be >> generated when the object is instantiated, or it might be deserialized from >> disk, but once that's done, it can never change. How do I express that? >> >> Thanks, >> >> -- >> Rick Mann >> rm...@latencyzero.com >> >> >> _______________________________________________ >> swift-users mailing list >> swift-users@swift.org >> https://lists.swift.org/mailman/listinfo/swift-users > -- Rick Mann rm...@latencyzero.com _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users