> 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
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution