[swift-evolution] Proposal Draft: Optional Upgrading Assignment.

Allen Ding allen at snappymob.com
Thu Feb 4 03:33:38 CST 2016


On Thu, Feb 4, 2016 at 4:28 PM, Paul Ossenbruggen via swift-evolution <
swift-evolution at swift.org> wrote:

> *Draft Proposal feedback welcome.*
>
> *## Introduction*
>
> Currently to make a optional from a value the type name must be repeated:
>
> let x = “Some Value”
> let y : String? = x
>
> This takes away some of the advantage of type inference because the very
> next line I must specify the type.
>

Any use case examples? I've been trying to figure out why is this needs
fixing (I don't even see it as a problem).


> *## Proposal*
>
> I propose the following syntax:
>
> let y? = x
>
> This binds a new optional y which wraps the same value of x. It follows
> the same conventions as *var* and *let* that currently exist in the
> language.
>
> The advantages: this is easier to read, more compact, and lets type
> inference determine the type.
>
> *If let* and other conditionals would not support this syntax and
> optionals of optionals is not supported. So let x?? = y would not result in
> an optional optional. Also if y was an optional it would not let you
> upgrade that.
>
> *## Detailed Design*
>
> The grammar:
>
> let optionalValue? = value
>
> This would not make sense in the *if let, (guard** let)* context because *if
> let* unwraps the value, so this would be an error.
>
> This should not conflict with pattern matching as that requires the *case*
>  keyword.
>
> Wrapping optional in an optional is an error.
>
> *## Impact on existing code*
>
> The current syntax will continue to exist so it will have no impact on
> existing code.
>
> *## Alternatives Considered*
>
> None.
>
>
>
> _______________________________________________
> 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/20160204/3f6a1fe0/attachment.html>


More information about the swift-evolution mailing list