On 31.05.2016 22:42, Leonardo Pessoa via swift-evolution wrote:
I'd actually like to see a change in guard so that I don't need those
braces. I'd like something more readable like
| guard cond1 or return nil
| guard cond2 or throw MyError.IllegalValue
| guard cond3 or do { ... }
I partially support this, but don't like this 'or'..
For me 'otherwise' or 'else' is better, but as soon as braces after `else`
is required in `if` statement, for `guard` we need another word to be able
to omit braces...
guard cond otherwise return
guard cond otherwise return nil
guard cond otherwise throw MyError.IllegalValue
guard cond otherwise do { ... }
But I feel like this will be inconsistent with other parts of language,
like `if` (don't you want to be able to do `if cond return nil`?), so I
don't think it's worth to discuss this.
Hmm.. just as thought experiment :
if cond return nil else do {...}
if cond do {...} else return nil
if cond throw MyError.IllegalValue else return nil
if cond do {...} else do {...}
It may add more cases for the compiler to handle but in all cases I
used guard so far the block was never really needed. But I think this
is out of the scope of this thread.
L
On 31 May 2016 at 15:59, Adrian Zubarev via swift-evolution
<[email protected]> wrote:
+1. This is example *is not* a single expression code block. There are 3
expressions (the condition, the return value in the else block, and the
primary return value).
The `else` block is a returning single expression block. I can’t show the
`guard` example without any returning scope.
You said it yourself "everywhere in the language“. It’s not “everywhere“ if
we would left out `guards` else-returning block.
If we’d allow this we could also write:
func test(boolean: Bool) {
guard boolean else {}
print("true")
}
This is useless and less readable.
But we already can do this with closures:
let nop = {} // useless
switch value {
...
default: {}() // do nothing
}
--
Adrian Zubarev
Sent with Airmail
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution