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

Paul Ossenbruggen possen at gmail.com
Thu Feb 4 02:28:09 CST 2016

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.

## 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


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

More information about the swift-evolution mailing list