[swift-evolution] Reconsidering SE-0003 Removing var from Function Parameters and Pattern Matching

Craig Cruden ccruden at novafore.com
Fri Jan 29 00:07:18 CST 2016


I prefer this style over “if let” & “if var”.   I don’t know it is my aversion to “let” because it brings back memories of a language I would prefer to forget (BASIC), but I find the scattering of lets in other statements/expressions to a we bit annoying (especially in pattern matching).  


> On 2016-01-29, at 12:54:12, Thorsten Seitz via swift-evolution <swift-evolution at swift.org> wrote:
> 
> This is called flow typing in Ceylon and they are using "exists" for that case but testing for conformance with "is" works just the same way there. The latter is of importance because the common use of union types in Ceylon.
> 
> if exists foo {
>         // foo is non-optional here
> }
> 
> if foo is String {
>         // foo is of type String here
> }
> 
> -Thorsten
> 
> Am 28.01.2016 um 19:08 schrieb Jacob Bandes-Storch via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>>:
> 
>>    if bind foo {
>>        // foo is non-optional in here
>>    }
>> 
>>    somethingAsync { [weak self] in
>>        guard bind self else { return }
>>        // ...
>>    }
>> 
>> Elegant when you want to rebind the same name!
>> 
>> Jacob
>> 
>> On Thu, Jan 28, 2016 at 10:05 AM, Erica Sadun via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> Do you realize how much confusion it would save if Swift just went with
>> 
>> if bind foo = bar {...}
>> 
>> with let semantics?
>> 
>> -- Erica
>> 
>> > On Jan 28, 2016, at 11:03 AM, Joe Groff via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> >
>> >
>> >> On Jan 28, 2016, at 12:43 AM, Brent Royal-Gordon <brent at architechies.com <mailto:brent at architechies.com>> wrote:
>> >>
>> >>> We have a lot of evidence that 'if var' confuses people—a lot of users think that 'if var' and 'var' bindings in case patterns will write back to the original value when this isn't the case.
>> >>
>> >> Can we address this with a diagnostic?
>> >>
>> >>      var bar: Int? = 1
>> >>      if var foo = bar {
>> >>              foo += 1        // Warning: Value is never used after modification (foo is a copy, not an alias)
>> >>      }
>> >>      print(bar)
>> >
>> > Good idea.
>> >
>> > -Joe
>> > _______________________________________________
>> > swift-evolution mailing list
>> > swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> > https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160129/7bf8990e/attachment.html>


More information about the swift-evolution mailing list