I just got home and tested. The answer is yes, `case "text"?` does work.
let optStr : String? = "text" switch optStr { case nil : print("Nil") case "text"? : print("Success") default : print("Default") } // Prints `Success` Nevin On Tue, Jun 28, 2016 at 12:27 PM, Nevin Brackett-Rozinsky < nevin.brackettrozin...@gmail.com> wrote: > Does `case "text"?` work? > > > On Tuesday, June 28, 2016, Kevin Nattinger via swift-evolution < > swift-evolution@swift.org> wrote: > >> Case .none: >> Case .some("string"): >> >> >> On Jun 28, 2016, at 06:40, Lucas Jordan via swift-evolution < >> swift-evolution@swift.org> wrote: >> >> Forgive me if this was/is discussed already, I am new to the process >> here.... >> >> (code is attached as a playground too) >> >> >> >> Sometimes when I am working with a String? nil can be a reasonable value, >> and what I want to do is something like the following: >> >> import UIKit >> >> >> var str:String? = "Hello, playground" >> >> >> switch str{ >> >> case nil: >> >> print("Nil!") >> >> case "Hello, playground": //it would be super nice if this worked. >> >> print("Match") >> >> default: >> >> print("Some other non nil value?") >> >> } >> >> >> But it does not work, the orange text is a compile time error, >> "Expression pattern of type 'String' cannot match value of type 'String?'. >> I realize that this can be replaced with a let statement (case let s >> where s == "Hello, playground":), but that is verbose. >> >> Seems like the compiler could be OK with the orange text, since it is >> clearly not nil. >> >> Thoughts? >> >> -Lucas >> >> >> >> >> >> <NilInSwitchStatements.playground.zip> >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org >> https://lists.swift.org/mailman/listinfo/swift-evolution >> >>
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution