类
在 Swift 中类是建立灵活的构建块。类似于常量,变量和函数,用户可以定义的类的属性和方法。Swift给我们提供了声明类,而无需用户创建接口和实现文件的功能。Swift 允许我们创建类作为单个文件和外部接口,将默认在类一次初始化来创建。
使用类的好处:
类和结构的共同特征:
语法
Class classname { Definition 1 Definition 2 --- Definition N }
class student{ var studname: String var mark: Int var mark2: Int }
let studrecord = student() 示例 class MarksStruct { var mark: Int init(mark: Int) { self.mark = mark } }class studentMarks { var mark = 300 } let marks = studentMarks() println("Mark is \(marks.mark)")
Mark is 300
访问类属性作为引用类型
类属性可使用 '.' 语法来访问。属性名称由 "." 分离在实例名后。
class MarksStruct { var mark: Int init(mark: Int) { self.mark = mark } }class studentMarks { var mark1 = 300 var mark2 = 400 var mark3 = 900 } let marks = studentMarks() println("Mark1 is \(marks.mark1)") println("Mark2 is \(marks.mark2)") println("Mark3 is \(marks.mark3)")
Mark1 is 300 Mark2 is 400 Mark3 is 900
类标识符
在 Swift 引用多个常量和变量指向的单个实例。要了解常量和变量指向一个特定的类实例标识操作符的使用。 类实例总是通过引用传递。在类NSString,NSArray 和 NSDictionary 实例始终分配作为参考传递到现有的实例,而不是使用一个副本。
class SampleClass: Equatable { let myProperty: String init(s: String) { myProperty = s } } func ==(lhs: SampleClass, rhs: SampleClass) -> Bool { return lhs.myProperty == rhs.myProperty }let spClass1 = SampleClass(s: "Hello") let spClass2 = SampleClass(s: "Hello")
spClass1 === spClass2 // false println("\(spClass1)")
spClass1 !== spClass2 // true println("\(spClass2)")
main.SampleClass main.SampleClass
结构体
Swift 提供了利用构造作为结构的灵活的构建块。 通过利用这些结构的一次可以定义构建体的方法和属性。
这不同于 C 和 Objective C 编程:
结构不用要求实现文件和接口。
结构体使我们能够创建一个文件并自动扩展其接口到其它块。
在结构体中的变量值被复制并传递在后续的代码,通过返回的旧值的副本使得这些值不能被改变。
语法
Structures are defined with a 'Struct' Keyword. struct nameStruct { Definition 1 Definition 2 --- Definition N }
struct MarkStruct{ var mark1: Int var mark2: Int var mark3: Int }
struct studentMarks { var mark1 = 100 var mark2 = 200 var mark3 = 300 } let marks = studentMarks() println("Mark1 is \(marks.mark1)") println("Mark2 is \(marks.mark2)") println("Mark3 is \(marks.mark3)")
Mark1 is 100 Mark2 is 200 Mark3 is 300
学生成绩需要访问结构名“studentMarks”。结构成员被初始化为 mark1, mark2, mark3 的整数类型值。然后,结构体 studentMarks()传递给 'marks' 使用 'let' 关键字。 'marks' 将包含结构成员的值。现在通过 '.' 访问结构的初始名称的值,并打印它。
struct MarksStruct { var mark: Intinit(mark: Int) { self.mark = mark } } var aStruct = MarksStruct(mark: 98) var bStruct = aStruct // aStruct and bStruct are two structs with the same value! bStruct.mark = 97 println(aStruct.mark) // 98 println(bStruct.mark) // 97
98 97
结构体最佳使用方式
Swift 语言提供功能来定义的结构体作为自定义数据类型,用于构建功能块。 结构体的实例的值传递给定义块来进一步的操作。
需要有结构:
封装简单的数据值
使用“值”而不是“引用”复制封装数据到它的相关联属性
结构体为 “复制” 和 “引用”
在 swift 中结构体是通过其成员的值,而不是它的引用。
struct markStruct{ var mark1: Int var mark2: Int var mark3: Intinit(mark1: Int, mark2: Int, mark3: Int){ self.mark1 = mark1 self.mark2 = mark2 self.mark3 = mark3 } }
var marks = markStruct(mark1: 98, mark2: 96, mark3:100) println(marks.mark1) println(marks.mark2) println(marks.mark3)
98 96 100
另外一个实例
struct markStruct{ var mark1: Int var mark2: Int var mark3: Intinit(mark1: Int, mark2: Int, mark3: Int){ self.mark1 = mark1 self.mark2 = mark2 self.mark3 = mark3 } }
var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)
println(fail.mark1) println(fail.mark2) println(fail.mark3)
34 42 13
结构体 “markStruct” 需要它的成员首先定义:mark1, mark2 和 mark3. 现在,成员类的变量初始化容纳整数值。之后结构成员的副本使用 “self” 关键字创建。当结构成员的副本创建结构体块,其参数标记传递给 'marks' 变量,它现在将保存学生的分数。那么标记打印为 98, 96, 100。 下一步对于相同的结构成员的另一个实例命名为 'fail' 用于指向不同的标记相同结构体的成员。那么标记现在打印为 34, 42, 13. 这清楚地说明了结构会有成员变量的副本,传入成员到它们即将推出的功能块。
来自Apple book“结构和类之间最重要的区别之一是,当结构在代码中传递时,它们总是被复制,而类是通过引用传递的。” 有谁能帮我明白那是什么意思吗?对我来说,类和结构似乎是一样的。
本文向大家介绍详解Swift语言的while循环结构,包括了详解Swift语言的while循环结构的使用技巧和注意事项,需要的朋友参考一下 Swift 编程语言中的 while 循环语句只要给定的条件为真时,重复执行一个目标语句。 语法 Swift 编程语言的 while 循环的语法是: 这里 statement(s) 可以是单个语句或语句块。condition 可以是任何表达式。循环迭代当条件(
问题内容: 苹果公司的书“结构和类之间最重要的区别之一是,结构在代码中传递时总是被复制,而类是通过引用传递的。” 谁能帮助我了解这意味着什么?在我看来,类和结构似乎是相同的。 问题答案: 这是带有的示例。请注意,更改名称后,如何更新两个变量引用的实例。现在,曾经被引用过的任何地方。 现在,使用a 可以看到复制了值,并且每个变量都保留了自己的一组值。当我们将名称设置为时,in 中的结构不会更改。 因
本文向大家介绍Python的语言类型(详解),包括了Python的语言类型(详解)的使用技巧和注意事项,需要的朋友参考一下 Python 是强类型的动态脚本语言 。 强类型:不允许不同类型相加 动态:不使用显示数据类型声明,且确定一个变量的类型是在第一次给它赋值的时候 脚本语言:一般也是解释型语言,运行代码只需要一个解释器,不需要编译 强类型语言和弱类型语言 1.强类型语言:使之强制数据类型定义的
主要内容:目录结构,源文件一般的编程语言往往对工程(项目)的目录结构是没有什么规定的,但是Go语言却在这方面做了相关规定,本节我们就来聊聊Go语言在工程结构方面的有关知识。 我们前面讲搭建Go语言开发环境时提到的环境变量 GOPATH,项目的构建主要是靠它来实现的。这么说吧,如果想要构建一个项目,就需要将这个项目的目录添加到 GOPATH 中,多个项目之间可以使用 分隔。 如果不配置 GOPATH,即使处于同一目录,代码之
魔方加密的 PHP 规范支持标准 PHP 规范中常用的语法结构。 echo 语法为: echo statement; echo statement_1[, statement_2[, ...]]; exit 语法为: exit; exit(); exit(statement); 请注意,exit(statement); 不论表达式的值是整数还是字符串,总会输出后才终止脚本,这与标准