打印(Mirror.DisplayStyle.CASE)用于案例.Collection,.Dictionary和.Set在操场

时间:2016-04-04 21:59:09

标签: swift swift-playground mirror

问题

  • Mirror.DisplayStyle"传统打印"预计下面描述的行为?如果是这样,为什么我们可能希望在操场上打印这些案例时公开遗留/内部案例名称(但不是例如运行XCode项目)?

我在操场上运行Swift 2.2,Xcode 7.3。

编辑添加:

根据@ J.Wang在下面的评论中提供的信息,似乎Mirror.DisplayStyle符合CustomStringConvertible(在PlaygroundLogger模块中)的.description扩展名已被弃用,w.r.t。案例CollectionDictionarySet的描述符(DisplayStyle)。无论是错误还是非常低优先级的更新;为了以防万一,已经提交了一个rdar:

背景和细节

Mirror结构的枚举public enum DisplayStyle { case Struct case Class case Enum case Tuple case Optional case Collection case Dictionary case Set } 具有以下公共接口

Collection

如果我打印这些案例( 在游乐场 ),我希望打印相应的案例名称。但是,对于DictionarySetIndexContainer个案,我们分别得到the MirrorDisposition legacy case names KeyContainerMembershipContainerprint(Mirror.DisplayStyle.Class) // Class print(Mirror.DisplayStyle.Collection) // IndexContainer <--- print(Mirror.DisplayStyle.Dictionary) // KeyContainer <--- print(Mirror.DisplayStyle.Enum) // Enum print(Mirror.DisplayStyle.Optional) // Optional print(Mirror.DisplayStyle.Set) // MembershipContainer <--- print(Mirror.DisplayStyle.Struct) // Struct print(Mirror.DisplayStyle.Tuple) // Tuple 。< / p>

_MirrorDisposition

即,与打印内部(未记录?)print(_MirrorDisposition.IndexContainer) // IndexContainer print(_MirrorDisposition.KeyContainer) // KeyContainer print(_MirrorDisposition.MembershipContainer) // MembershipContainer 枚举的案例时相同

Mirror

以上&#34;影子盒打印&#34;但是,如果在运行Xcode项目时打印这些案例,则不存在。

我自己的先前研究

language ref for the DisplayStyle enum包含一条语句,该语句可能描述上面有行为(但不是为什么

  

关于如何解释DisplayStyle的建议。

     

Playgrounds和调试器将显示类似的表示   当Mirror用于显示时,用于print(..)案例名称所指示的类型的实例。

但说实话,我对如何解释上面粗体标记的部分感到有点茫然。可能这个&#34;类似的&#34; 表示可以解释上述内容,但是为什么Swift想要将内部(/遗留)名称一直暴露给UI(ul { padding:0; margin:0; } li { padding:0; margin:0; list-style:none; } ul.square li { padding-left:20px; list-style:square; } ) ?

0 个答案:

没有答案