[swift-evolution] Proposal: Auto-implemented computed properties

Chris Lattner clattner at apple.com
Fri Dec 11 13:24:24 CST 2015


> On Dec 11, 2015, at 11:20 AM, Nathan Yee via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Certain languages allow the programmer to avoid creating backing variables for getters and setters by using this syntax:
> 
> class Foo {
>     init(x: Double) {
>         self.x = x
>     }
>     var x: Double {
>         get
>         set
>     }
>     // alternatively var x: Double { get; set }
> }
> 
> and generating code equivalent to this:
> 
> class Foo {
>     init(x: Double) {
>         _x = x
>     }
>     var _x: Double
>     var x: Double {
>         get {
>             return _x
>         }
>         set {
>             _x = newValue
>         }
>     }
> }

Hi Nathan,

How is this different than just declaring “var x : Double”?  It is an important part of swift’s design that stored and computed properties are equivalent to external uses of an API.

-Chris


> 
> This notation decreases verbosity and reduces the chance of incorrectly implementing the pattern.
> 
> In the following case, the computed property 'x' can only be set in the initializer.
> 
> class Foo {
>     init(x: Double) {
>         self.x = x
>     }
>     var x: Double { get }
> }
> 
> Alternatively, the following syntax can be used to avoid using an initializer:
> 
> class Foo {
>     var x: Double { get } = 1.0
> }
> 
> Before looking into the nuances of this syntax (regarding struct/enum properties, access control, attributes, etc.) I would like to ask the community if this feature would be a good fit for Swift.
> 
> -- 
> Nathan
>  _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151211/db4d8f28/attachment.html>


More information about the swift-evolution mailing list