[swift-evolution] Proposal Draft: Optional Upgrading Assignment.
dabrahams at apple.com
Thu Feb 4 02:33:04 CST 2016
on Thu Feb 04 2016, Paul Ossenbruggen <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.
let y: Optional = x
let z = Optional(x)
> ## 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
> swift-evolution mailing list
> swift-evolution at swift.org
More information about the swift-evolution