- Swift 教程
- Swift - 首页
- Swift - 概述
- Swift - 环境
- Swift - 基本语法
- Swift - 变量
- Swift - 常量
- Swift - 字面量
- Swift - 注释
- Swift 运算符
- Swift - 运算符
- Swift - 算术运算符
- Swift - 比较运算符
- Swift - 逻辑运算符
- Swift - 赋值运算符
- Swift - 位运算符
- Swift - 其他运算符
- Swift 高级运算符
- Swift - 运算符重载
- Swift - 算术溢出运算符
- Swift - 恒等运算符
- Swift - 范围运算符
- Swift 数据类型
- Swift - 数据类型
- Swift - 整数
- Swift - 浮点数
- Swift - Double
- Swift - 布尔值
- Swift - 字符串
- Swift - 字符
- Swift - 类型别名
- Swift - 可选值
- Swift - 元组
- Swift - 断言和前提条件
- Swift 控制流
- Swift - 决策
- Swift - if 语句
- Swift - if...else if...else 语句
- Swift - if-else 语句
- Swift - 嵌套 if 语句
- Swift - switch 语句
- Swift - 循环
- Swift - for in 循环
- Swift - while 循环
- Swift - repeat...while 循环
- Swift - continue 语句
- Swift - break 语句
- Swift - 穿透语句
- Swift 集合
- Swift - 数组
- Swift - 集合
- Swift - 字典
- Swift 函数
- Swift - 函数
- Swift - 嵌套函数
- Swift - 函数重载
- Swift - 递归
- Swift - 高阶函数
- Swift 闭包
- Swift - 闭包
- Swift - 转义和非转义闭包
- Swift - 自动闭包
- Swift 面向对象编程
- Swift - 枚举
- Swift - 结构体
- Swift - 类
- Swift - 属性
- Swift - 方法
- Swift - 下标
- Swift - 继承
- Swift - 重写
- Swift - 初始化
- Swift - 析构
- Swift 高级特性
- Swift - ARC 概述
- Swift - 可选链
- Swift - 错误处理
- Swift - 并发
- Swift - 类型转换
- Swift - 嵌套类型
- Swift - 扩展
- Swift - 协议
- Swift - 泛型
- Swift - 访问控制
- Swift - 函数与方法
- Swift - SwiftyJSON
- Swift - 单例类
- Swift 随机数
- Swift 不透明类型和装箱类型
- Swift 有用资源
- Swift - 在线编译
- Swift - 快速指南
- Swift - 有用资源
- Swift - 讨论
Swift - 嵌套类型
嵌套类型是 Swift 编程中一个非常强大的工具。使用嵌套类型,我们可以轻松地将枚举、类和结构体嵌套到其他枚举、类和结构体中。使用嵌套类型,我们可以将枚举或类嵌套到结构体中,反之亦然。所以我们可以说,使用嵌套类型可以创建复杂的自定义类型。
嵌套类型通常用于创建组织良好且分层结构的程序。它们也用于封装代码,以便我们更容易理解。它们还可以减少命名空间冲突。
创建嵌套类型
我们可以通过将一个结构体定义到另一个结构体中,或者将一个类定义到另一个类中来创建嵌套类型,就像嵌套函数一样。我们可以在另一个结构体、类和枚举中创建多个结构体、类和枚举。
语法
以下是嵌套类型的语法:
Struct Name{
Struct name{
// body
}
}
使用此语法,我们可以嵌套类和枚举。
示例
假设我们正在创建一个汽车的结构体,其中包含多种类型的特性,例如颜色和天窗。因此,使用嵌套类型,我们可以定义每种类型的规格。
struct Car{
struct Color{
var single: String
var double: String
var customize: String
}
struct Sunroof{
var half: String
var full: String
}
}
创建嵌套类型的实例
我们可以使用点运算符创建嵌套类型的实例。只需在外部类型的名称前加上点运算符,然后指定嵌套类型的名称即可。每个嵌套类型都有其实例。
语法
以下是创建嵌套类型实例的语法:
let name = outerTypeName.nestedTypeName(value: type)
或者:
var name = OuterTypeName(label1:Value, lable2: OuterTypeName.NestedTypeName(label: Value, lable2: Value))
示例
让我们创建上述嵌套类型的实例:
let instance1 = Car.Color(single: "Yellow", double: "Green Black", customize: "Blue") let instance2 = Car.Sunroof(half: "yes", full: "No")
或者:
var myCar = Car(name:"Breeza", color: Car.Color( single: "Blue", double: "No", customize: "White"), sunroof:Car.Sunroof(half: "Yes", full: "No"))
完整的示例如下:
import Foundation
// Outer sturtcure
struct Car{
// Nested structure 1
struct Color{
var single: String
var double: String
var customize: String
}
// Nested structure 1
struct Sunroof{
var half: String
var full: String
}
// Properties
var name: String
var color: Color
var sunroof:Sunroof
}
// Creating instance of Car structure
var myCar = Car(name:"Breeza", color: Car.Color(single: "Blue", double: "No", customize: "White"), sunroof:Car.Sunroof(half: "Yes", full: "No"))
// Displaying Data
print("Car name:", myCar.name)
print("Car Color:", myCar.color.single)
print("Have half Sunroof:", myCar.sunroof.half)
输出
它将产生以下输出:
Car name: Breeza Car Color: Blue Have half Sunroof: Yes
结构体内的枚举
使用嵌套类型,您不必只将结构体嵌套到另一个结构体中。我们还可以将枚举嵌套到另一个结构体中,反之亦然。
示例
将枚举嵌套到结构体中的 Swift 程序。
import Foundation
// Outer structure
struct Tutorialspoint {
// Nested enum
enum Department {
case HR
case Development
case Designing
case ContentWriting
}
// Properties
var name: String
var location: String
var department: Department
init(name: String, location: String, department: Department) {
self.name = name
self.location = location
self.department = department
}
// Method
func employeeDetail() {
print("Name: \(name)")
print("Location: \(location)")
print("Department: \(department)")
}
}
let report = Tutorialspoint(name: "Mona", location: "Hyderabad", department: .Designing)
report.employeeDetail()
输出
它将产生以下输出:
Name: Mona Location: Hyderabad Department: Designing
类内的结构体
使用嵌套类型,我们可以将结构体嵌套到类中,或者将类嵌套到结构体中,而不会出现任何错误。
示例
将结构体嵌套到另一个类中的 Swift 程序。
import Foundation
// Outer class
class XYZCollege {
// Nested structure
struct StudentDetail {
var name: String
var age: Int
var subject: String
var year: Int
}
// Properties
var department: String
var details: [StudentDetail]
init(department: String) {
self.department = department
self.details = []
}
// Method 1
func newStudents(student: StudentDetail) {
details.append(student)
}
// Method 2
func studentsData() {
print("department name: \(department):")
for s in details {
print("name: \(s.name), age: \(s.age), subject: \(s.subject), year: \(s.year)")
}
}
}
// Creating instances
let s = XYZCollege(department: "Science")
let stud1Detail = XYZCollege.StudentDetail(name: "Mona", age: 19, subject: "Maths", year: 1)
let stud2Detail = XYZCollege.StudentDetail(name: "Pihu", age: 18, subject: "Chemistry", year: 1)
let stud3Detail = XYZCollege.StudentDetail(name: "Suman", age: 19, subject: "Maths", year: 1)
// Accessing the methods
s.newStudents(student: stud1Detail)
s.newStudents(student: stud2Detail)
s.newStudents(student: stud3Detail)
s.studentsData()
输出
它将产生以下输出:
department name: Science: name: Mona, age: 19, subject: Maths, year: 1 name: Pihu, age: 18, subject: Chemistry, year: 1 name: Suman, age: 19, subject: Maths, year: 1
广告