SWIFT总结
一、类型:
swift是强类型的,也就说在编译器编译的时候知道某个变量的类型,如果两个变量的类型不一样不能进行操作,比如:
int a = 0;
float b = 2.5;
int total = a + b;
// 编译时会报错
二、字符串操作:
int peopleCount = 4; "There are \(peopleCount) peoples"OC中字符串的长度length和swift中的length返回的长度有可能不一样,通过utf16count返回的才能和OC的length相同 字符串的拼接用加号“+”,比较相等用等号”==” ###三、类型推断: 编译器可以根据变量的值来推断出其类型,这时候我们不需要明确指定它的类型,比如:
var count: Int = 4; var count = 4; // 这两条语句是等价的###四、IF语句 if语句中的条件必须显示的表示为true或false,否则会报错,比如:
var a = 3 if(3 > 0){ doSomething() } 不能写成 if( a ){ doSomething() }###五、类型 1. Int,Int8,Int16,Int32是不同类型,它们之间不能做运算操作; 2. float 是32位, double是64位,编译器总是将某个字推断成double类型的,而不是float型的 ###六、数组 数组是存储相同类型的有序列表。 定义:
var peoples: [String] = [] // 显示类型 var peoples = [String]() // 隐式类型注意: 数组作为函数参数传递的时候,是值传递,至于数组中的元素是按照何种方式传递,取决于数组中元素的类型是值类型还是引用类型。 ###七、字典 存储无序相同类型的集合
var people: [String: someClass] = [:] var people = [String: someClass]() var hight = ["wsy": 20]###八、可选类型 声明的时候加上一个问号“?”,如果访问可选类型必须进行拆包,否则会报错,使用叹号“!”拆包,比如:
let dict = ["name" : "wsy"] let name = dict["name"] let greet = "Hello" + name! // 直接对name进行拆包可能会导致奔溃,因为name可能是nil,应该这样写 if let myName = name! { let greet = "Hello" + myName }###九、泛型:
func maxValue (a: T,b: T) ->T { if a > b { return a } return b }###十、元组: 包含不同类型的值,可以作为函数的返回值,比如:
let ice = (2,"Hello","World") // 访问: ice.0 ice.1 ... let ice2(count:2,name:"Hello",greet: "World") // 访问: ice2.count ice2.name ... 注意:如果某个值在分解的时候不需要,可以使用"_"替代
十一、Switch语句于OC的不同
- 不需要break;
- 使用fallthrough贯穿到下一个分支;
- case:可匹配范围、值、元组等,如:case 0…10,case: (0,,);
- 可使用where,比如:case let(index,size) where index > 3;
十二、类初始化
类初始化的时候,需要注意一些问题:
- 类中的属性名相同时,需要使用self.
- 在init方法中可以改变常量的值
- 初始化需要初始化所有的属性,如果有默认值可以不初始化
- 便捷初始化方法是指以来其他初始化方法实现初始化
十三、函数
外部参数:
func hello(externalName localName: Int){ }
如果想改变参数,必须声明为var类型:
func hello(var localName: Int){ localName = 10 }
外部参数名和内部参数名相同用“#”:
func hello( #localName: Int){ }
func hello(externalName localName: Int = 5){ }
十四、闭包:
定义:{(参数列表) -> 返回值类型 in 语句}
使用函数: func customSort() -> (Int,Int) -> Bool{ func mySort( a: Int,b: Int) -> Bool{ return a
十五、写在最后
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。