SWIFT总结

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 

十五、写在最后

  • 类方法使用class关键字
  • 使用final防止被重写
  • 当struct中的方法要改变struct中值的时候,该方法必须适应关键字mutating
  • 存储属性:无getter盒setter方法
  • 计算属性:实现getter盒setter方法
  • 延迟属性:某个属性在第一次使用的时候初始化
  • var a: bool {get, set} // 可读可写
  • 带隐式拆箱的可空类型,用叹号代替文化,这样使用的时候不需要拆箱,但是只要创建可就必须有值
  • 可空链,多个可空类型嵌套
  • -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值