I've been bit by this many times. A warning would really have helped me.

> On 20 May 2016, at 07:06, Krystof Vasa via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> Sorry, my previous example didn't use the string interpolation, it should be
> 
> print("http://apple.com\(myURL.path)").
> 
>> On May 20, 2016, at 7:04 AM, Dan Appel <dan.appe...@gmail.com> wrote:
>> 
>> 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
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to