第一章 简介
2014年:swift 1
2015年:swift 2
可以把Swift看成是运用现代编程理念重写的,使用安全编程(safe programming)设计,源于Objective-C, Rust, Haskell, Ruby, Python, C#, CLU等重新设计的新语言。
Swift不再需要保持和C的兼容性,使得她可以拥有很多新的属性:
自动类型推断(Type Inference) | Swift可以根据初始值自动推断出变量或常量的类型 |
范型 | 范型使得Swift可以为不同类型的类执行相同的代码 |
Collection Mutability | “Swift does not have separate objects for mutable or non-mutable containers. Instead, you define mutability by defining the container as a constant or variable.” 摘录来自: “Mastering Swift 2”。 iBooks. |
代码块(Closure Syntax) | 代码块是一份可以被传递与使用的自包含性代码 |
Optional | Optional定义了一种变量,这种变量的值不是必须的,可能没有值 |
Switch | Switch语法被显著地优化与提升了 |
多值返回 | 函数可以用tuples返回多个值 |
Operator重载 | 每个累都可以实现他们的Operator重载 |
关联性的枚举 | 可以定义比一般意义上复杂得多的枚举,不只是互相联系的值 |
Playground
这里的实例代码都是在playground中运行,playground分为三个部分,左边代码,右边可以实时显示结果甚至图片,颜色等,下面是debug,debug面板是默认不现实的,可以shift + cmd + Y调出。正如其名,playground是用来尝试api和新东西的。
注释写法
/// 单行注释 /** 多行注释 */ /** My add function, add them together and return results. - parameters: - first: The first integer - second: second The second integer - returns: The sum */ func myAdd(first: Int, second: Int) -> Int{ let results = first + second return results }
分号不是必须的,强烈推荐不使用分号。
括号
判断条件里面的括号不是必须的,推荐不写最外层的括号
var x = 1 var y = 2 var z = 3 if x == 1 { print("ok") }
花括号是必须的
判断条件里面的赋值
判断条件里的赋值是会编译出错的
if x = 1 { // 这样会报错 }
var n=0 // 没有白色空格 var m = 0 // 有白色空格
可以用逗号隔开,打印出多个值拼接在一起,也可以使用\( )来输出变量或常量值
var name = "jeff" var language = "swift" var message1 = " Welcome to the wonderful world of " var message2 = "\(name) Welcome to the wonderful world of \(language)!" print(name, message1, language) print(message2)
print函数还可以带可选三个参数,separator表示使用什么分隔符,terminator表示使用什么结束符,toStream表示输出到哪个流
var name1 = "jeff" var name2 = "john" var name3 = "alice" var line = "" print(name1, name2, name3, separator:", ", terminator:" over", toStream: &line) print(line)
在swift,常量是被鼓励的,在swift 2和xcode 7,如果定义了一个不变的变量会得到警告。因为定义常量可以减少错误率。常量用let定义。多个常量或者变量可以用逗号隔开。
类型安全
swift是类型安全的语言,如果我们赋值一种值到另外一种类型的变量中,会出现编译错误
var age = 25 age = "good" // 编译报错
swift会根据初始值推断变量的类型
显式定义类型
我们还可以显式地定义变量类型
var x : Float = 3.14
今天就写到这
未完待续...