> On 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.

There are unfortunate output ambiguities if you don't include it.

Consider the output of all of these:

print(String?("test"))
print(String?("nil"))
print(String?.None)

The current output is unambiguous:

print(String?("test"))
    Optional("test")
print(String?("nil"))
    Optional("nil")
print(String?.None)
    nil


-- 
Greg Parker     gpar...@apple.com     Runtime Wrangler


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

Reply via email to