Thats a fair solution. I still disagree, but not as strongly. On Thu, May 19, 2016 at 10:01 PM Krystof Vasa <kv...@icloud.com> wrote:
> 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> 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> 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> 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 >> >> https://lists.swift.org/mailman/listinfo/swift-evolution >> > >> > _______________________________________________ >> > 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 >> > -- > Dan Appel > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > 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