虚幻引擎UE4材质节点初级探究视频教程
16508 人在学
Swift是苹果公司在WWDC2014上发布的全新开发语言。在Swift发布前,iOS和OSX的开发语言是ObjectiveC,苹果此次发布的Swift这款语法更为简洁的,兼容Objective-C的语言。
一、基础
1.swift还是使用//和/**/来注释,且/**/允许多行注释。
2.swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的。
3.swift在语句后面加分号与否都是正确的,但swift偏好的风格是不在结尾处加分号的,如果有多个语句,必须用分号隔开。
4.在一个数字中庸下划线(_)会被忽视,方便认出大数值的数字,也可以在前面补零。
5.swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重载。
6.typealias可以为一个类型指定另一个名字,这样可以清晰地表达类型的意义.typealiasnewType=OldTypeName。
7.assert断言表示自己抛出异常,assert第一个参数表示通过而不抛异常的条件,第二个参数表示提示,第二个参数可以没有。
8.swift中的=赋值运算符没有返回值,所以不会犯ifa=3{}这样的错误了,运算符前后加空格,以免xcode不能识别。
二、变量
1.let定义常量,var定义变量,let定义的必须在声明时指定初始值,普通的var声明也必须赋初始值。
2.let声明的变量不可再改变,而var变量可以再改变,但是你不能再声明一个已经声明的常量或变量。
3.可以在一行同时声明多个常量或变量,用逗号隔开;如果每个常量对应一个var或let,用分号隔开即可。
4.每个常量和变量都一定会有固定的类型,如果没有指定类型,swift会根据后面的赋值类型来推断。
5.命名swift不能使用保留字和箭头,不能以数字为开头。此外,只要没有其他的规定,以任何命名都可以。
6.不允许使用关键字来命名,但你可以在关键词的前后加上``来命名,比如`let`,非关键字加上``命名也可以。
7.swift里可以声明元组,类型与(Int,String)相似,你可以用var声明,也可以用let声明,括号里的两个都是变量或者常量。
8.而元组的方式和直接分开声明两个变量和常量没多大区别,把其中的变量拿出来单独用或当元组用都可以,混合用也行。
9.可以用元组名直接通过下标索引来访问元组里对应的值,比如aaa.0aaa.1。
10.可以在元组中跟元素命名,比如(code:404,message:"NotFound"),然后用aaa.code和aaa.message来访问。
三、类型
1.int型的UInt8和Int32都可以通过min和max来取最大值和最小值。
2.Double是64位浮点数,Float是32位浮点数,对小数自动推断是Double类型,除非是指定过类型的。
3.可以跟指定为浮点类型的常量或变量赋一个整数值,但不能是整数变量,它会自动转换成浮点数。
4.显示指定类型的变量或常量,不能跟它赋值一个不同类型的值,它不能做自动转换,除了跟浮点类型赋值一个整数数值。
5.在指定类型后加一个?表示可选类型,意为它可能为没有值为nil,你可通过可选绑定或者判断是否为空来使用它。
6.若是一个class的可选类型,你可以通过?.访问它的属性和方法,看前者与后面的方法有没有对应,若能响应,则执行;若不能,则返回nil。
7.这是个语法糖,比如String?类型等价于Optional类型,只是便于书写,它和String类型的本质不同。
8.若不想用判断是否为空或者用可选绑定或者用.?来访问它,则可用最直接最简单的!强制解包来使用,但前提是保证非空。
9.若一个可选量没有值又强制解包会报错,一个可选类型会隐式赋值为nil,你也可以在使用中赋值为nil。
10.之所以需要有可选类型,是因为swift是类型绝对安全的语言,它需要你在使用变量时一定有值,但这种可选类型太麻烦,所以产生了!类型,!类型本质就是可选类型。
11.声明为!可选类型,也可以不做初始化,它相当于你在每次使用可选类型时加上了!进行强制解包,你就不需要自己加!了,你要保证它不为空,否则使用会出错。
四、字符串
(1)...表示闭区间/..<表示开区间,==表示值相等/===表示引用相同,+可以直接加字符串或数组。
(2)swift中的string是值类型,它在做常量变量赋值或函数中进行传递时都会做值拷贝,都是一个新的副本,swift只有在必要的情况下做拷贝。
(3)可以用forin遍历字符串,用count全局函数计算字符数,用isempty属性判断是不是空字符串,有hasPrefix判断前缀(后缀等)。
(4)可以用startIndex和endIndex获取开始和结束下标,用数组和下标的形式访问单个字符;还可以通过\\()的方式生成字符串。
五、数组
(1)swift中的数组可以用[String]和Array来声明,它们的意思相同,赋值也直接用中括号[]表示即可,里面的值需要同一个类型。
(2)array有count/isEmpty等属性,有append/insert/remove等方法,它可以直接+一个数组,也可以通过下标和下标区间来取值,区间取到的是一个数组。
(3)foriteminshoppingList/for(index,value)inenumerate(shoppingList)两种遍历方式,后面一种会知道下标。
(4)可以通过[Double](count:3,repeatedValue:3.3)/Array(count:3,repeatedValue:2.5)初始化一个数组。
(5)数组也是值传递,如果把数组a赋值给数组b,a和b就是两份拷贝,修改后相互不会有影响。
六、字典
1.字典是通过[String:String]/Dictionary<String,String>声明的,形式也是用[a:b,c:d]这种形式,通过键访问值。
2.可直接通过a[b]=c这种方式增加一个键值对,通过updateValue和removeValueForKey来增加删除键值对。
3.可用for(airportCode,airportName)inairports/forairportCodeinairports.keys遍历键值对或键或值。
4.可直接赋值[:]来清空字典,键值可以为Int;和string、array一样,dictionary也是值拷贝。
七、Set
1.用Set声明Set,和数组一样给它赋值,也可以通过赋值[]清除,也必须是同一类型,也有insert/contains方法,isEmpty属性。
2.Set也有forin遍历,有取两个集合的差交等做排列的方法,也有判断子集超集等方法。
八、For循环
1.forindexin1...5的这个index只是在当前这个循环的作用域内,如果for循环外面也有一个index,随便修改也不会对它造成影响。
2.for_in1...10如果不需要循环的这个索引,可以用下划线_代替,在swift中只要不用那个值的,一般可以用_代替。
3.forvarindex=0;index<3;++index这种for循环也可以。
九、Switch语句
1.swift中的switch必须穷举所有的可能,否则必须加default,穷举时在一个case后面可以放很多可能值,用逗号隔开即可。
2.穷举可以是用...和..<表示的一个区间,对于元组可以一个用_通配符,另一个匹配,或者两个都匹配,或者两个都是区间(只有一个元素也可以做值绑定)。
3.做统配时,可以用varx/letx,或let(x,y)进行值绑定,其中var声明的可以修改。
4.当let做值绑定时,可以在后面加上where做条件判断。switch不需要用break防止穿透,但它还会去下一个case判断条件去匹配,使用break还是可以直接跳出switch。
5.在switch同样可以使用break/continue跳出一个标签。
以上是对swift基础的一些语法总结,不管学习哪一门技术,在学习的过程中我们都要学会独立思考并总结,这样才能获得有效的进步。