【发布时间】:2018-09-19 11:50:49
【问题描述】:
例如:
在新版 Swift 之前,我可以这样写:
NSNib(nibNamed: "TagCellView", bundle: nil)
现在Apple选择定义很多嵌套结构类型,比如NSNib.Name,现在我必须这样写:
NSNib(nibNamed: NSNib.Name("TagCellView"), bundle: nil)
恕我直言,我认为旧版本更干净,Apple选择背后的原因是什么?
【问题讨论】:
-
比较 stackoverflow.com/a/45520652/1187415 以了解类似问题以及解释原因的 Swift 邮件列表。
-
@Martin,这实际上并不适用,因为它是一种新的、具体的结构类型,因此在那里有意义。
NSNib.Name但是只是String的别名,所以具体类型的任何好处都不适用。即使扩展NSNib.Name如下所示,实际上也扩展了String。此外,采用NSNib.Name的函数可以直接采用字符串,因为它是 字符串,同样,采用字符串的函数现在可以采用NSNib.Name,即使它们无事可做带笔尖。如果它是一个具体的类型,它会有所不同,但没有它,我看不到任何好处。
标签: swift struct parameters nested-types