With this proposal in place:

1) The user would type print(myURL.path).
2) The compiler will immediately issue a warning about printing an optional - 
the user would hence learn about optionals *before* the code is run.
3) If he ran the code anyway, he'd still get Optional(/iphone/) anyway.
4) Xcode would offer a Fix-It, adding .debugDescription to the optional, 
getting Optional(/iphone/) on the anyway, yet again.

I'm not saying *removing* the current behavior, but adding a warning for this - 
you'd get the same result ignoring the warning and applying the Fix-It, but 
you'd have control over this.

> On May 20, 2016, at 6:48 AM, Dan Appel via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> >google for swift print optional stackoverflow. I think that kind of speaks 
> >for itself.
> 
> I think this is actually an example of why the current behavior is a good 
> thing. I did just google that and the top comment of the first result 
> explains what an optional is. That is very good and encourages beginners to 
> understand how optionals work under the hood. If you hide that from them, 
> they will only be even more confused when they see just the string "nil" pop 
> up when it previously was showing the correct value.
> 
> On Thu, May 19, 2016 at 9:36 PM Krystof Vasa via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> BTW - google for swift print optional stackoverflow. I think that kind of 
> speaks for itself.
> 
> > On May 19, 2016, at 6:07 PM, Jeremy Pereira via swift-evolution 
> > <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> >
> > -1
> >
> > This seems to me like crippling string interpolation just because sometimes 
> > we make mistakes. 99% of the time, if I interpolate an optional, it’s 
> > because I want it that way. I don’t want to have to put up with a warning 
> > or write the same boilerplate 99% of the time just to flag up the 1% more 
> > easily. Sorry.
> >
> >> On 18 May 2016, at 19:50, Krystof Vasa via swift-evolution 
> >> <swift-evolution@swift.org <mailto:swift-evolution@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@swift.org <mailto:swift-evolution@swift.org>
> >> https://lists.swift.org/mailman/listinfo/swift-evolution 
> >> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> >
> > _______________________________________________
> > swift-evolution mailing list
> > swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> > https://lists.swift.org/mailman/listinfo/swift-evolution 
> > <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> -- 
> Dan Appel
> _______________________________________________
> 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

Reply via email to