[swift-evolution] [Idea] Add forced conversion for Error catching pattern matching
Brent Royal-Gordon
brent at architechies.com
Mon Mar 21 22:26:07 CDT 2016
> do {
> let action = chooseAction(game)
> game = try game.applyAction(action)
> } catch let e as ActionError {
> game.failedAction = e
> } catch _ {
> fatalError(“This is an unfortunate bit of noise :/")
> }
If you're just worried about the noise...
try! {
do {
let action = chooseAction(game)
game = try game.applyAction(action)
}
catch let e as ActionError {
game.failedAction = e
}
}()
Or if that's too much syntax:
func mustSucceed<Return>(function: () throws -> Return) -> Return {
return try! function()
}
mustSucceed {
do {
let action = chooseAction(game)
game = try game.applyAction(action)
}
catch let e as ActionError {
game.failedAction = e
}
}
Or, if you use this specific ActionError logic widely, you can put that in a function:
func catchActionError<Return>(function: () throws -> Return) -> Return? {
do {
return try function()
}
catch e as ActionError {
game.failedAction = e
return nil
}
catch {
fatalError()
}
}
catchActionError {
let action = chooseAction(game)
game = try game.applyAction(action)
}
--
Brent Royal-Gordon
Architechies
More information about the swift-evolution
mailing list