Mirror.DisplayStyle
"传统打印"预计下面描述的行为?如果是这样,为什么我们可能希望在操场上打印这些案例时公开遗留/内部案例名称(但不是例如运行XCode项目)?我在操场上运行Swift 2.2,Xcode 7.3。
编辑添加:
根据@ J.Wang在下面的评论中提供的信息,似乎Mirror.DisplayStyle
符合CustomStringConvertible
(在PlaygroundLogger
模块中)的.description
扩展名已被弃用,w.r.t。案例Collection
,Dictionary
和Set
的描述符(DisplayStyle
)。无论是错误还是非常低优先级的更新;为了以防万一,已经提交了一个rdar:
Mirror
结构的枚举public enum DisplayStyle {
case Struct
case Class
case Enum
case Tuple
case Optional
case Collection
case Dictionary
case Set
}
具有以下公共接口
Collection
如果我打印这些案例( 在游乐场 ),我希望打印相应的案例名称。但是,对于Dictionary
,Set
和IndexContainer
个案,我们分别得到the MirrorDisposition
legacy case names KeyContainer
,MembershipContainer
和print(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;
}
) ?