[swift-evolution] Proposal: Allow Getters and Setters to Throw

Matthew Johnson matthew at anandabits.com
Sat Dec 5 21:17:43 CST 2015


+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

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


More information about the swift-evolution mailing list