[swift-evolution] Proposal: Deprecate optionals in string interpolation

Charles Srstka cocoadev at charlessoft.com
Wed May 18 17:42:53 CDT 2016


+1 from me as well. All these “Optional(foo)” things showing up in user-facing strings are a pain, and since they don’t show up until runtime, it’s really easy to miss them.

Charles

> On May 18, 2016, at 1:50 PM, Krystof Vasa via swift-evolution <swift-evolution at swift.org> wrote:
> 
> The string interpolation is one of the strong sides of Swift, but also one of its weaknesses. 
> 
> It has happened to me more than once that I've used the interpolation with an optional by mistake and the result is then far from the expected result. 
> 
> This happened mostly before Swift 2.0's guard expression, but has happened since as well.
> 
> The user will seldomly want to really get the output "Optional(something)", but is almost always expecting just "something". I believe this should be addressed by a warning to force the user to check the expression to prevent unwanted results. If you indeed want the output of an optional, it's almost always better to use the ?? operator and supply a null value placeholder, e.g. "\(myOptional ?? "<<none>>")", or use myOptional.debugDescription - which is a valid expression that will always return a non-optional value to force the current behavior.
> 
> Krystof
> 
> _______________________________________________
> 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