嵌套类型(nested types)允许在现有类型——类、结构体或枚举(enum)内声明新的结构体、类和枚举。这使得代码更具结构化,隐藏实现细节,并明确指示该类型仅与其父类型相关。
示例:
struct Chessboard { enum PieceType { case king, queen, rook, bishop, knight, pawn } struct Square { let file: Character let rank: Int } } let kingType = Chessboard.PieceType.king let square = Chessboard.Square(file: "E", rank: 4)
嵌套类型无法在其名称空间之外直接访问,这降低了错误使用的风险,使代码更具可读性。
可以在其名称空间之外继承嵌套类或结构体吗?用于访问嵌套类型的语法是什么?
答案:
class Game { class Level {} } class AdvancedLevel: Game.Level {} // 合法
ParentType.NestedType 的形式。故事
在重构项目的业务逻辑时,类型嵌套得过深:在结构体内的枚举中的结构体。导致访问内部类型的语法过于冗长,困扰了新团队成员,阻碍了单元测试。
故事
程序员在类中声明了嵌套枚举,用于状态,但尝试在类外使用它而没有名称限定。这导致了编译错误,并需要修正整个项目中的引用。
故事
在项目扩展时,另一位开发者试图从内部嵌套类(nested class)继承类,但遇到了访问私有属性的错误,因为无法在父名称空间之外扩展对内部成员的访问机制。