> On Dec 23, 2015, at 3:35 PM, Joe Groff via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> 
>> On Dec 23, 2015, at 10:16 AM, Andrew Duncan via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> In fact, I feel the same way too. I have definite views about indefinite 
>> pronouns. When I am teaching, I studiously avoid “it”, “this”, and “that”: 
>> at any given instant half the students have wandering minds, and if they 
>> miss the referent, they get lost. My old HyperTalk habits must be 
>> resurfacing with “it”. :)
>> 
>> I still think the use case is valuable as a (natural IMHO) generalization of 
>> guard, and feel the annoyance of having the bound variable show up three 
>> times and outlast the guard, when I don’t want to use or even see it. 
>> Brent’s suggestion removes the second objection and alleviates the first; 
>> I’ll see that, but ask if we can raise it. The pitch is:
>> 
>>   guard case let .Succeed(m) = returnsResult() else let r {
>>       return r
>>   }
>> 
>> Improvement! The question is: can we reduce this by one or two ‘r’s?
> 
> A slight generalization would be to allow for an arbitrary pattern in the 
> `else` clause:
> 
> guard case let .Succeed(m) = returnsResult() else case let .Failure(r) {
>       return r
> }
> 
> with the requirement that the "guard" and "else" patterns form an exhaustive 
> match when taken together. That feels nicer than special-case knowledge of 
> two-case enums, though I admit it punishes what's likely to be a common case.

I thought a bit about that. Would it make sense to support multiple else blocks?

        guard case let .Succeed(m) = returnsResult()
        else if case .Failure("Temporary Failure") {
                return retry()
        }
        else case let .Failure(r) {
                return r
        }

-- 
Brent Royal-Gordon
Architechies

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to