[swift-evolution] Reconsidering SE-0003 Removing var from Function Parameters and Pattern Matching
Dave Abrahams
dabrahams at apple.com
Fri Jan 29 10:54:47 CST 2016
on Thu Jan 28 2016, Thorsten Seitz <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
> }
FWIW, some of us are concerned that if the types of names change
without being announced by a let or var binding, it will be confusing.
That's one reason we haven't gone this way in the past.
> -Thorsten
>
>> Am 28.01.2016 um 19:08 schrieb Jacob Bandes-Storch via swift-evolution <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> 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> wrote:
>>> >
>>> >
>>> >> On Jan 28, 2016, at 12:43 AM, Brent Royal-Gordon <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
>>> > 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
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> 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
--
-Dave
More information about the swift-evolution
mailing list