On Jan 9, 2018, at 3:19 PM, Connor Wakamo via swift-evolution 
<swift-evolution@swift.org> wrote:
> Good afternoon,

Hi Connor,

Huge +1 for this proposal, I’m thrilled you’re cleaning this up.  Couple of 
detail questions:

>  
> <https://github.com/cwakamo/swift-evolution/tree/playground-quicklook-api-revamp#proposed-solution>
> Detailed design
> 
> To provide a more flexible API, we propose deprecating and ultimately 
> removing the PlaygroundQuickLook enum and CustomPlaygroundQuickLookable 
> protocol in favor of a simpler design. Instead, we propose introducing a 
> protocol which just provides the ability to return an Any (or nil) that 
> serves as a stand-in for the instance being logged:
> 

What is the use-case for a type conforming to this protocol but returning nil?  
If there is a use case for that, why not have such an implementation return 
“self” instead?

In short, can we change playgroundRepresentation to return Any instead of Any?. 
 Among other things, doing so could ease the case of playground formatting 
Optional itself, which should presumably get a conditional conformance to this. 
 :-)


> /// Implementors of `CustomPlaygroundRepresentable` may return a value of one 
> of
> /// the above types to also receive a specialized log representation.
> /// Implementors may also return any other type, and playground logging will
> /// generated structured logging for the returned value.
> public protocol CustomPlaygroundRepresentable {
On the naming bikeshed, the closest analog to this feature is 
CustomStringConvertible, which is used when a type wants to customize the 
default conversion to string.  As such, have you considered 
CustomPlaygroundConvertible for consistency with it?

The only prior art for the word “Representable” in the standard library is 
RawRepresentable, which is quite a different concept.

>   /// Returns the custom playground representation for this instance, or nil 
> if
>   /// the default representation should be used.
>   ///
>   /// If this type has value semantics, the instance returned should be
>   /// unaffected by subsequent mutations if possible.
>   var playgroundRepresentation: Any? { get }
Again to align with CustomStringConvertible which has a ‘description’ member, 
it might make sense to name this member “playgroundDescription”.

Thank you again for pushing this forward, this will be much cleaner!

-Chris


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

Reply via email to