[swift-evolution] Proposal: Allow Getters and Setters to Throw
Ilya Belenkiy
ilya.belenkiy at gmail.com
Sat Dec 5 21:43:22 CST 2015
+1
On Sat, Dec 5, 2015 at 10:17 PM Matthew Johnson via swift-evolution <
swift-evolution at swift.org> wrote:
> +1 to this. Subscripts should also be able to throw and currently cannot.
>
>
> On Dec 5, 2015, at 9:08 PM, Nikolai Vazquez via swift-evolution <
> swift-evolution at swift.org> wrote:
>
> One of the aspects of Swift that I like is computed properties for
> structures and classes. It allows for adding logic when obtaining values or
> for having the returned value be dependent on another.
>
> As of the `ErrorType` protocol introduction in Swift 2, we can throw
> errors when it comes to functions and initializers. However, this does not
> apply to getters and setters.
>
> ```swift
> struct File<Data> {
> var contents: Data {
> get throws { ... }
> set throws { ... }
> }
> }
> ```
>
> A better example would be getting and setting the current working
> directory of the process:
>
> ```swift
> import Foundation
>
> extension Process {
> static var workingDirectory: String {
> get {
> let fileManager = NSFileManager.defaultManager()
> return fileManager.currentDirectoryPath
> }
> set throws {
> let fileManager = NSFileManager.defaultManager()
> guard fileManager.changeCurrentDirectoryPath(newValue) else {
> throw Error("...")
> }
> }
> }
> }
>
>
>
> ```
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
> _______________________________________________
> 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/20151206/af72ee95/attachment.html>
More information about the swift-evolution
mailing list