> On Dec 4, 2015, at 10:05 PM, Dmitri Gribenko <griboz...@gmail.com> wrote:
> 
> On Fri, Dec 4, 2015 at 10:00 PM, Andrew Trick <atr...@apple.com> wrote:
>> I’m adding runtime functionality to support optional casts and ran into some 
>> Optional to String conversion behavior that is currently somewhat 
>> accidental—it will break when I add functionality. I want to understand the 
>> desired behavior before doing extra work to fix it.
>> 
>> Currently swift does this:
>> 
>>> print(Int?(3))
>> Optional(3)
>>> print(String?("meow"))
>> Optional("meow")
>> 
>> I think swift should do this:
>> 
>>> print(Int?(3))
>> 3
>>> print(String?("meow"))
>> "meow"
>>> debugPrint(Int?(3))
>> Optional(3)
>>> debugPrint(String?("meow"))
>> Optional("meow")
>> 
>> When a value already knows how to represent itself as a string, I don't 
>> think that the string "Optional" belongs in the textual representation.
>> 
>> When debugging data structures, it makes sense to include the "Optional" 
>> indicator.
>> 
>> What was the intention here and what do people think is the desired behavior?
> 
> This behavior was not accidental.  Here's the rationale:
> 
> If an Optional is nil, it should somehow indicate that.  Whatever the
> representation is, it would be engineer-oriented and not suitable for
> end users.  Thus, Optional should never be printed to users, it would
> only ever be presented to engineers, and thus its print() and
> debugPrint() representations should be the same.
> 
> Dmitri

I think you're saying that it's the programmer's responsibility not to 
construct a user-visible String from an Optional.

By accidental, I mean that Optional does not conform to 
CustomStringConvertible. If we want "Optional" to be part of the string 
conversion, then this conformance needs to exist, or I need to add some special 
handling of Optional. Do you see any problem with me adding that conformance?

Incidentally, when *do* we want debug string conversion to deviate? Or is it 
just a customization point we anticipate to be useful?

Andy
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to