Swift实战入门笔记 -- 大学霸78两章
熟悉Swift 如何用Cocoa 和Cocoa Touch完成工作很重要 我们可以将软件看作模块化工具的集合,而不是单个大型实体。 SpriteKit,它是iOS和OS X都可以使用的一种框架用于制作快速、高效的2D游戏和图形。Instruments它是用于Mac iOS 应用程序的探查器和分析工具 表示提示或建议 表示警告或警示 #会告诉编译器该名称为本地参数名和外部参数名 func函数名(#本地参数名:数据类型) {。。。。。} 设定参数默认值 定义函数时,为参数设定默认值 使用可变参数,可以使一个参数接受零个或多个指定类型的值。设定一个可变参数需要 在参数类型名后添加“...”。 求平均值: import Foundation var total: Double = 0 total += number } println(total/Double(numbers.count)) } average(1,2,3,4,5) average(3,8,19) 3.0 10.0 注意:可变参数只有一个,可变参数必须放在最后,作为最后一个参数 使用变量参数实现字符串右对齐 import Foundation funk aligeRight(var string:String,count :Int,pad:Character) { let amountToPad = count -countElements(string) //遍历 for _in 1…amountToPad { string = pad +string } println(string) } alignRight(originalString1,10,”*”) let originalString2 = “Hi” alignRight(originalString2,"*") let originalString3 = "" alignRight(originalString3,"*") 运行结果: *****swift 注意:变量参数只能存在于函数调用的生命周期中 参数名前加inout关键字来实现—>定义输入-输出参数 func 函数名(inout 参数名:数据类型,……){…} 如果参数是输入输出参数,调用时必须在参数前加一个“&”符号 return的表达式类型和函数的返回类型一致 返回多个返回值时使用元组类型 使用函数类型作为参数类型或者返回值类型 Swift提供了 74 个标准函数 绝对值函数abs(数值) 返回值为o或者正数 最大值函数 max(参数 1,参数2,224)">3,...)参数可以是数值,字符串,字符 最小值min() 函数 map(序列,闭包表达式),它的功能是返回一个新的序列。 序列的最大值函数maxElement()/最小值函数 minElement() maxElement()函数获取一个序列中最大值的元素。maxElement(序列)数值或者一个范围 minElement()函数可以获取一个序列中最小值的元素minElement(数值或者一个范 contains(,元素) 判断序列是否包含指定元素函数 返回值为布尔类型 true包含,false不包含 比较时会区别字母的大小写 #import Foundation var languages = ["Swift","Objective-C","C"] //判断在languages 数组中是否包含"Swift"字符串if contains(languages,"Swift") == true{ println("languages序列中包含元素“Swift”") }else{ println("languages序列中不包含元素“Swift”") } //数组中是否包含"Java"{ println("languages序列中包含元素“Java”") }else{ println("languages 序列中不包含元素“Java”") } 序列排序函数sort(序列)序列是指数组 var languages = ["Swift","C"] println("排序前:languages=(languages)") println("排序后:languages=(sortlanguages)") var value = [8,1,5,7,0] println("排序前:value=(value)") println("排序后:value=(sortvalue)") 排序前:languages=[Swift,Objective-C,C] 排序后:languages=[C,Swift] 排序前:value=[8,0] 排序后:value=[0,8] Program ended with exit code: 0 序列倒序函数reverse(序列)序列是数组 import Foundation println("languages=(languages)") println("倒序输出:") println(i) } var value = [1,10] println("value=(value)") println("倒序输出:")for i in reverse(value){ println(i) } 运行结果如下: languages=[Swift,C] 倒序输出: C 10 闭包是自包含的函数代码块,可以在代码中被传递和使用,C和 Objective-C中的代码块(blocks)以及其他一些编程语言中的Lambda 函数比较相似 {(参数列表) ->返回值类型 in 语句 } 参数可以是常量,变量,输入-输出参数,但没有默认值或最后使用可变参数,元组可作为参数和返回值 关键字in便是闭包的参数和返回值类型定义已经完成,闭包函数体即将开始 闭包表达式最长用在其他的函数中,并不是单独的去使用它。 Trailing闭包 :将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用 类 pointer指针 类的构成: 属性:它将值和特定的类关联。 方法:实现某一特定的功能,类似于函数。 class类名{//具体内容} 实例化对象也可以称为类的实例 类名可以使用“大骆驼拼写法”SomeClass 属性、对象以及方法使用“小骆驼拼写法” 实例化对象(类的实例) var/let 对象名=类名() swift中属性可以将值跟特定的类。结构或者枚举关联。 分为存储属性,计算属性和类型属性 存储属性就是存储特定类中的一个常量或变量,根据数据是否可变,分为常量存储属性和变量存储属性 let 常量存储属性名:数据类型 = 初始值 var 变量存储属性名:数据类型 = 初始值 初始化:::——>>>initializers 对存储属性的访问用. 对象名.常量存储属性名/变量存储属性名 修改存储属性: 对象名.变量存储属性 = 修改的内容 如果开发者只有在第一次调用存储属性时才能确定初始值,这时需要使用延迟存储属性 实现。关键字:lazy lazy var 属性名:数据类型 = 初始内容 计算属性不存储值,而是提供了一个 getter 和 setter来分别进行获取值和设置其他属性的值。 getter使用 get 关键字进行定义,其一般形 式如下: get{ … return 某一属性值 } setter使用 set 关键字进行定义,其一般语法形式如下: set(参数名称){ … 属性值= 某一属性值 … } —————————————包含set和get var 属性名:数据类型{ get{ … return 某一属性值 } set(参数名称){ … 某一属性值 。。。 } } 在计算属性中,如果只有一个 getter,则称为只读计算属性。只读计算属性可以返回一 个值,但不能设置新的值。 类型属性就是不需要对类进行实例化就可以使用的属性。它需要使用关键字 class 进行 定义 class var 类型属性名:数据类型{ … 返回一个值 } 访问属性的方式:类名.类型属性 修改: 类名.属性类型 = 修改的内容 属性监视器用来监控和响应属性值的变化。每次属性被设置值的时候,都会调用属性监 视器,哪怕是新的值和原先的值相同。一个属性监视器由willSet 和 didSet 组成,其中,willSet在设置新的值之前被调用,它会将新的属性值作为固定参数传入。didSet在新的值被设置之后被调用,会将旧的属性值作为参数传入,可以为该参数命名或者使用默 认参数名 oldValue。 默认的参数可以是不可以交换使用的,在延迟属性中不可以使用属性监视器 ,willSet 和 didSet 也可以单独使用。 var属性名:数据类型 =初始化 willSet(参数名){ …} didSet(参数名) { …} Swift 会使用默认 newValue 表示新值 方法是定义在类中的函数。分为实例方法被定义在类中,但是由类的实例调用。此类方法叫实例方法 func 方法名()-> 返回值类型{…} 调用:对象名.方法名() 类型方法:定义类自己定义类自身调用的方法, 实例方法被类的某个实例调用的方法。 class 类名{ class fun c方法名{ 参数1:数据类型,参数2:数据类型,…){ …}} 调用:类名.方法名(参数1,参数2.,,,) 变量名称 定义范围 存储属性 定义在类中 局部变量 函数、方法或闭包内部 全局变量 函数、方法、闭包或任何类型之外定义的变量 局部变量和存储属性同名的解决方法——self属性 下标脚本通过 subscript 关键字进行定义, subscript(参数名称1:数据类型参数名称2:数据类型...) ->返回值的数据类型 { get { //返回与参数类型匹配的类型的值} set(参数名称) { } } 可选链接可以判断请求 或调用的目标(属性、方法、下标脚本等)是否为空 如果目标有值,那么调用就会成功; 相反,则返回空(nil)。对于多次请求或调用的可以被链接在一起形成一个链条。Swift中 的可选链接和 Objective-C中的消息为空类似,但是 Swift 可以使用在任意的类型中使用,并且失败与否可以被检测到。 用?来标示 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |