首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Swift基础 扩展

Swift基础 - 扩展 翻译自:https://docs.swift.org/swift-book/LanguageGuide/Extensions.html 扩展为现有类、结构、枚举或协议类型添加了新功能...这包括扩展您无法访问原始源代码(称为追溯建模)的类型的能力。扩展类似于Objective-C中的类别。(与Objective-C类别不同,Swift扩展没有名称。)...Swift中的扩展可以: 添加计算实例属性和计算类型属性 定义实例方法和类型方法 提供新的初始化器 定义下标 定义和使用新的嵌套类型 使现有类型符合协议 在 Swift 中,您甚至可以扩展协议,以提供其要求的实现...如果您使用扩展程序将初始化器添加到另一个模块中声明的结构中,则新初始化器在从定义模块调用初始化器之前无法访问self。 下面的示例定义了一个自定义Rect结构来表示几何矩形。...突变实例方法 使用扩展添加的实例方法也可以修改(或突变)实例本身。修改self或其属性的结构和枚举方法必须将实例方法标记为mutating,就像原始实现的突变方法一样。

7800
您找到你想要的搜索结果了吗?
是的
没有找到

Swift专题讲解二十——扩展

Swift专题讲解二十——扩展 一、简介         Swift中的扩展与Objective-C中的类别功能相似,扩展可以为一个已有的类、结构体、枚举或者协议添加新的属性或方法,与Objective-C...的类别不同的是,Swift中的扩展没有名称。        ...Swift中的扩展支持如下功能: 1.添加计算属性 2.定义实例方法和类型方法 3.定义新的构造方法 4.定义下标方法 5.定义嵌套类型 6.使一个已有的类遵守协议 7.对协议进行扩展添加新的方法 二、...使用扩展添加计算属性         使用extension来声明扩展,示例代码如下: //创建一个类 有两个属性 class MyClass { var name:String var...age:Int init(){ name = "HS" age = 24 } } //为MyClass类扩展一个计算属性 extension MyClass

29420

swift 类和结构

定义 类定义(通过关键字class),结构体定义(通过关键字struct) class Student: NSObject { var name = "" var age = 0 }...() 所有结构体会自动生成一个构造器,用于初始化结构体中的属性(类没有此功能) let ter = Teacher(name: "teacher", age: 30) 属性访问 student.name...,其值会被拷贝(在 Swift 中,所有的基本类型:整数、浮点数、布尔值、字符串、数组和字典,都是值类型) struct Teacher { var name = "" var age...== if stu === stu1 { print("same Student instance") } 类和结构体对比 Swift 中类和结构体有很多共同点 定义属性用于存储值...定义方法用于提供功能 定义下标可以使用下标语法来访问实例所包含的值 定义构造器用于生成初始化值 通过扩展可以增加默认实现的功能 通过协议可以提供某种标准功能 与结构体相比,类还有如下的附加功能 继承允许一个类继承另一个类的特征

16710

Swift 类和结构

Swift 中类和结构体有很多共同点。...共同处在于: 定义属性用于存储值 定义方法用于提供功能 定义下标操作使得可以通过下标语法来访问实例所包含的值 定义构造器用于生成初始化值 通过扩展以增加默认实现的功能 实现协议以提供某种标准功能 与结构体相比...{ // 在这里定义结构体 } 注意 在你每次定义一个新类或者结构体的时候,实际上你是定义了一个新的 Swift 类型。...在 Swift 中,所有的结构体和枚举类型都是值类型。这意味着它们的实例,以及实例中所包含的任何值类型属性,在代码中传递的时候都会被复制。...Swift 中的这些引用与其它的常量或变量的定义方式相同。 类和结构体的选择 在你的代码中,你可以使用类和结构体来定义你的自定义数据类型。 然而,结构体实例总是通过值传递,类实例总是通过引用传递。

1.2K40

Swift基础 结构和类

翻译自:https://docs.swift.org/swift-book/LanguageGuide/ClassesAndStructures.html 结构和类是通用的、灵活的结构,成为程序代码的构建块...然而,与其他语言相比,Swift结构和类的功能要接近得多,本章的大部分内容描述了适用于类或结构类型的实例的功能。因此,使用了更通用的术语实例。 比较结构和类 Swift中的结构和类有很多共同点。...两者都可以: 定义属性以存储值 定义提供功能的方法 定义下标,以使用下标语法提供对其值的访问 定义初始化器以设置其初始状态 扩展以将其功能扩展到默认实现之外 符合协议,提供某种类型的标准功能 有关更多信息...,请参阅属性、方法、下标、初始化、扩展和协议。...事实上,Swift中的所有基本类型——整数、浮点数、布尔值、字符串、数组和字典——都是值类型,并作为幕后结构实现。 所有结构和枚举都是Swift中的值类型。

6700

Swift 结构体构造器

Swift 中的结构体和类跟其它面向对象语言一样都有构造函数, 而OC是没有的 Swift 要求实例化一个结构体或类的时候, 所有的成员变量都必须有初始值 构造函数的意义就是用于初始化所有成员变量的,...如果结构体中的所有属性都有默认值, 可以调用 ()构造一个结构体实例如果结构体中的属性没有默认值, 可以自定义构造器, 并在构造器中给所有的属性赋值 在Swift中,定义为结构体的类型会自动获得由编译器生成的默认初始化程序...String var age: Int var isAdult: Bool { age >= 18 } } let user = User(name: "韦弦", age: 9) 从 Swift...因此,总而言之,在以下情况下,我们可以使用结构体默认生成的成员构造器: 它的所有成员都是可见的或具有默认值。 我们正在与定义该结构体的模块相同的模块中创建一个实例。...当我们为结构体创建便利构造器的时候,我们可以在 扩展extension 中声明该便利构造器,这样做的好处是,当我们定义一些便利构造器方便初始化的同时,不会覆盖编译器生成的成员构造器: struct User

67720
领券