我们可以使用类在Swift中定义类型。
类为我们提供了一种将相关信息和行为组合在一起的方法。
要定义一个Swift类,使用 class
关键字。
class Person { var name: String = "Name" var age:Int = 0 func profile() -> String { return "I"m (self.name) and I"m (self.age) years old." } }
在上面的代码中,我们定义了一个名为 Person
的类。
Person
类由一个人姓名的字符串组成一个人的年龄的整数。
这些变量和常量类型称为属性。
要使用 Person
实例,请根据此定义创建一个新实例。
class Person { var name: String = "Name" var age:Int = 0 func profile() -> String { return "I"m (self.name) and I"m (self.age) years old." } } var p = Person()
在Swift中,对象通常是对结构和类的实例的引用。
对于类实例属性,您使用点语法。
p.name = "Tom" p.age = 40
在上面的代码中,我们使用点语法来更改变量值。
类是引用类型。
使用赋值运算符时,只分配对实例的引用。
当更改类实例成员时,它们将反映在实例无处不在的程序。
struct S { var i = 1 } class C { var i = 1 } var s = S() var c = C() println("s.i = (s.i)") println("c.i = (c.i)")
清单32-2中的语句将打印:
s.i = 1 c.i = 1
引用和复制实例之间的主要区别发生在使用赋值运算符 =
来引用实例时。
对于结构,在分配期间将获取实例的副本。此副本独立于原始实例操作。更改副本不会反映在原始实例中。
将变量分配给类实例会对类实例成员进行更改,原来的实例内容也会改变。
struct S { var i = 1 } class C { var i = 1 } var s2 = s var c2 = c s2.i = 2 c2.i = 2 println("s.i = (s.i)") println("c.i = (c.i)")
上面的代码生成以下结果。
从输出我们可以看到原始结构成员不会改变原始类的实例成员的值更改为与值相同 c2
上的 i
属性。
类相等运算符===比较两个类实例。
如果实例变量都指向同一个实例,此运算符将返回true。
class Person { var name: String = "Name" var age:Int = 0 func profile() -> String { return "I"m (self.name) and I"m (self.age) years old." } } var p1 = Person() p1.name = "A" p1.age = 40 var p2 = Person() p2.name = "B" p2.age = 25 var b1 = p2 === p2 var b2 = p1 === p2
上面的代码生成以下结果。
b1是真的,因为它们都是相同的实例,b2为假。
类实例不等式身份操作符!==
测试看是否两个实例不指向同一实例。
var b7 = p1 !== p1 //returns false
Swift if 语句Swift 条件语句一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。语法Swift 语言中 if 语句的语法:if boole...
可变性可变性,可以改变东西的能力,与其他语言相比它在 Rust 中有点不同。可变性的第一个方面是它的非默认状态:let x = 5;x = ...
在 MATLAB 中当进行两个向量的加法与减法的时候,这两个向量的元素必须有相同的类型和数量。详细例子MATLAB中创建一个脚本文件,...
如果你想要在VBA众多的组件和功能中自由切换,那么可以使用对象浏览器。这个专门的内置工具在VB编辑器窗口是可用的。使用下面任...
WebSecurity - InitializeDatabaseConnection()WebSecurity 对象定义 InitializeDatabaseConnection() 方法初始化 WebSecurity ...