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

Reply via email to