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

Morten Bek Ditlevsen bek at termestrup.dk
Sun Dec 6 15:04:15 CST 2015


+1 from here too!
søn. 6. dec. 2015 kl. 21.43 skrev Ilya Belenkiy via swift-evolution <
swift-evolution at swift.org>:

> +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
>>
> _______________________________________________
> 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/47ab4879/attachment.html>


More information about the swift-evolution mailing list