[swift-evolution] [Discussion] Simplifying case syntax
Anton Zhilin
antonyzhilin at gmail.com
Thu Mar 2 04:44:44 CST 2017
Hi Erica, thanks for restarting the discussion—I hope that it will be
considered on topic for stage 2.
I agree that the part with preventing let .case(existingVar, newVar) should
be moved out of the proposal, because these issues are orthogonal. So the
options with ~= and := will differ only in that the former overloads an
existing custom operator.
I prefer the version with keywords instead of operators, because
overloading any custom operator can be confusing.
I think that pattern should be on the right, because that’s the order of
computation: first the expression, then pattern matching. That’s also how
switch looks: first expression, then patterns.
// That's what current if-case looks like. Counterintuitive!do {
case .success(let value): …
case .failure(let value): …
} switch computeResult(foo(frobnicate), bar)
Examples with matches and is, for extra brevity:
if computeResult(foo(frobnicate), bar) matches .success(let value) { … }
if computeResult(foo(frobnicate), bar) is .success(let value) { … }
I also considered using ->. It would never be ambiguous in this context,
but keywords still look better IMO:
if computeResult(foo(frobnicate), bar) -> .success(let value) { … }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170302/b30aab5b/attachment.html>
More information about the swift-evolution
mailing list