swift学习要点摘要1-10

1.基础部分

变量: var A = 7; A=8 //一行多条语句时需要用【;】显式分割

常量:let B = 7 //常量不能改变值

输出:println("The value of A is \(A).") 输出的内容会在最后换行

//单行注释

/*多行

注释*/

Float表示32位浮点数,Double表示64位浮点数

let pi = 3 + 0.14159 //pi会被推测为Double类型

整数转换: let A: UInt16 = 2000; let B:UInt8 = 1; Let C = A + UInt16(A)

类型别名:typealias AudioSample = UInt16

元组(tuples):let http404Error = (404, "Not Found"); 解元组:let (statusCode, statusMessage) = http404Error

元组元素:println("The status code is \(http404Error.0)")

可选:let convertedNumber = possibleNumber.toInt() //convertedNumber 为Int?,"123" => 123, "Hello" => nil,声明可选变量没有赋值,自动被设置为nil

隐式解析可选(可以被当做非可选来使用): Let A? = 7; println(A!); Let B! = 7; println(B)

*如果一个变量之后可能变成nil的话请不要使用隐式解析可选。

断言:assert(age >= 0, "A person's age cannot be less than zero") //age<0时被触发

2.基本运算符

不等:2 != 3

for index in 1..5 { sum += index } //1..5包含1不包含5,1...5包含5

3.字符串和字符

字符串常量变量:var str = "A" str +=“ and B”于objc的类NSString和NSMutableString不同,字符串是否可以修改仅仅通过定义的是常量还是变量来决定。

字符串长度:不同的Unicode字符需要不同的内存空间,计算长度时需要countElements 函数

字符串比较:相等 A==B,前缀hasPrefix,后缀hasSuffix

4.集合类型

数组:var ShoppingList: String[] = ["Eggs", "Milk"] //String[]可省略,空数组var someInts = Int[]()

数组插入:shoppingList.insert("Maple Syrup", atIndex: 0) //"Maple Syrup"变成第一项

字典:var airports: Dictionary<String, String> = ["TYO": "Tokyo", "DUB": "Dublin"] //可省略Dictionary<String, String>

5.控制流

For-In:for index in 1...5 { }; For:for var index = 0; index < 3; ++index {}

while, do-while: do { statements } while condition

switch:不存在隐式的贯穿(Fallthrough),所以case块不需要break语句。需要贯穿时可使用fallthrough关键字

break:中断该循环体,调到循环结束

6.函数

多返回值函数:func count(string: String) -> (vowels: Int, consonants: Int, others: Int = 0) { }; let total = count("some arbitrary string!"); println("\(total.vowels)")

In-Out形参:func swapTwoInts(inout a: Int, inout b: Int) { }

函数变量:var mathFunction: (Int, Int) -> Int = addTwoInts

7.闭包

sort函数调用函数:func backwards(s1: String, s2: String) -> Bool { return s1 > s2 };var reversed = sort(names, backwards) //backwards为true表示字符大的放前边

sort函数调用闭包1:reversed = sort(names, { (s1: String, s2: String) -> Bool in return s1 > s2 })

sort函数调用闭包2:reversed = sort(names, { s1, s2 in return s1 > s2 } )

sort函数调用闭包3:reversed = sort(names, { $0 > $1 } )

sort函数调用闭包3:reversed = sort(names, >)

8.枚举

存储原始值:enum ASCIIControlCharacter: Character { case Tab = "\t" case LineFeed = "\n"case CarriageReturn = "\r" }

9.类和结构体

结构体和枚举是值类型,类是引用类型。

恒等运算符:“等价于===”表示两个类类型(class type)的常量或者变量引用同一个类实例。不等价与!==

NSArray和NSDictionary实例总是以对已有实例引用,而不是拷贝的方式被赋值和传递。

10.属性

延迟存储属性@lazy,存储属性,计算属性var origin = Point()

只有getter没有setter的计算属性是只读属性

let只能声明常量属性,用var声明只读计算属性

属性监视器:willSet(newParam),didSet { 默认参数名oldValue }

全局变量部,是在函数、方法、闭包或任何类型之外定义的变量,局部是在函数,方法,闭包内部定义的变量。

全局的常量和变量都是延迟计算的,不需要标记@lazy。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值