[swift-evolution] Proposal: Auto-implemented computed properties
Nathan Yee
ny.nathan.yee at gmail.com
Fri Dec 11 13:20:43 CST 2015
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151211/6be25953/attachment.html>
More information about the swift-evolution
mailing list