[swift-evolution] Proposal: Deprecate optionals in string interpolation
Dan Appel
dan.appel00 at gmail.com
Fri May 20 00:04:46 CDT 2016
Thats a fair solution. I still disagree, but not as strongly.
On Thu, May 19, 2016 at 10:01 PM Krystof Vasa <kvasa at 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 at 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 at 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 at 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 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
>> >
>> > _______________________________________________
>> > swift-evolution mailing list
>> > swift-evolution at swift.org
>> > https://lists.swift.org/mailman/listinfo/swift-evolution
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
> --
> Dan Appel
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
> --
Dan Appel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160520/8ce751be/attachment.html>
More information about the swift-evolution
mailing list