[swift-evolution] Proposal: Auto-implemented computed properties
Nicky Gerritsen
nickygerritsen at me.com
Fri Dec 11 13:23:48 CST 2015
I’m wondering what the actual use of this is. Why not just write:
class Foo {
init(x: Double) {
self.x = x
}
var x: Double
}
Regards,
Nicky
> On 11 dec. 2015, at 20:20, 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
> }
> }
> }
>
> 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/421b017b/attachment.html>
More information about the swift-evolution
mailing list