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