[swift-evolution] [Idea] Switch Statement with Optional Binding

Kevin Nattinger swift at nattinger.net
Fri May 27 11:25:43 CDT 2016


You can do it today (2.2 and 3.0-master) like this:

switch cityIDs["Paris"] {
	case let .Some(parisCityID) where 0..<10 ~= parisCityID:
	print("Paris city ID: \(parisCityID)")
	default:
	break
}

> On May 27, 2016, at 1:58 AM, Natthan Leong via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Hi there,
> 
> I was wondering if the community would like Swift to have a switch statement with optional binding.
> 
> Take this simple dictionary as an example:
> 
> let cityIDs = ["Paris": 1, "London": 2]
> 
> Currently, this is how things are done if parisCityID is used only once within an if-let statement for only a switch statement: 
> 
> if let parisCityID = cityIDs["Paris"] {
>     switch parisCityID {
>     case 0..<10:
>         print("Paris city ID: \(parisCityID)")
>     default:
>         break
>     }
> }
> 
> And here is the proposed switch statement with optional binding:
> 
> switch let parisCityID = cityIDs["Paris"] {
>     case 0..<10:
>         print("Paris city ID: \(parisCityID)")
>     default:
>         break
> }
> 
> With var:
> 
> switch var parisCityID = cityIDs["Paris"] {
>     case 0..<10:
>         parisCityID += 2 // just to demonstrate var
>         print("Paris city ID: \(parisCityID)")
>     default:
>         break
> }
> 
> Feedback welcomed!
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution



More information about the swift-evolution mailing list