`lazy` properties can't be `let`. Personally, I disagree with this — their 
initial mutation is transparent, and it's conceptually perfectly valid to have 
a value that's, say, too expensive to calculate during every instance's init 
and whose value never changes once calculated — but there may well be Very Good 
Reasons for needing them to be `var`.

- Dave Sweeris

> On May 17, 2016, at 17:23, Leonardo Pessoa <m...@lmpessoa.com> wrote:
> 
> David, I'm thinking about the side effects calling a computed property has 
> and although I see some use cases for let properties I also see workarounds. 
> For example, a lazy initialiser will solve the issue of running a certain 
> code only once and caching its value. I also start to think that any case in 
> this proposal will be solved by lazy initialisers thus rendering it 
> unnecessary.
> 
> 
>> On 17 May 2016 at 17:50, David Sweeris <daveswee...@mac.com> wrote:
>> You can't, if you're extending a pre-existing type.
>> 
>> I'd think that it might be possible to do some caching if the compiler knows 
>> that a computed property is constant, but maybe it doesn't work that way.
>> 
>> - Dave Sweeris
>> 
>>> On May 17, 2016, at 14:40, Leonardo Pessoa via swift-evolution 
>>> <swift-evolution@swift.org> wrote:
>>> 
>>> If the value of the property is a constant, shouldn't you just declare it 
>>> as one? If you have any sort of computation in it, even concatenating two 
>>> constant strings, can you really say this is a constant? And you would also 
>>> be overloading the compiler into trying to check for every property you use 
>>> let if the overall computation is constant or not. IMO, let isn't really 
>>> the most appropriate keyword to use for properties.
>>> 
>>> - Leonardo
>>> 
>>>> On 13 May 2016 at 04:44, Andru Felipe Zuniga via swift-evolution 
>>>> <swift-evolution@swift.org> wrote:
>>>> It would be useful for clarification of a computed property being constant 
>>>> in extensions. For example:
>>>> 
>>>> extension SKSpriteNode {
>>>>         static let type: String {
>>>>                 return “Sprite”
>>>>         }
>>>> }
>>>> 
>>>> Andru
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution@swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution@swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to