学习笔记(1)
Swift 的 nil
和 Objective-C 中的 nil
并不一样。在 Objective-C 中,nil
是一个指向不存在对象的指针。在 Swift 中,nil
不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选状态都可以被设置为 nil
,不只是对象类型。
Swift 程序由多种标记组成,标记可以是单词,标识符,常量,字符串或符号。
1、数据类型:
Int、Double、Float、Bool、String、Character、Optional
Int:在32位平台上,Int
和Int32
长度相同;在64位平台上,Int
和Int64
长度相同。
Double 表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
Float 表示32位浮点数。精度要求不高的话可以使用此类型。
Double
精确度很高,至少有15位数字,而 Float
最少只有6位数字。
Optional:使用可选类型来处理值可能缺失的情况。可选类型表示有值或没有值。
类型别名:typealias newname = type
Swift 是一个类型安全(type safe)的语言,所以它会在编译你的代码时进行类型检查
2、可选类型
var optionalInteger: Int?
var optionalInteger: Optional<Int>
当你声明一个可选变量或者可选属性的时候没有提供初始值,它的值会默认为 nil。
隐式可选类型:
一个隐式解析可选类型其实就是一个普通的可选类型,但是可以被当做非可选类型来使用,并不需要每次都使用解析来获取可选值。
下面的例子展示了可选类型 String
和隐式解析可选类型 String
之间的区别:
let possibleString: String? = "An optional string." let forcedString: String = possibleString! // 需要感叹号来获取值 let assumedString: String! = "An implicitly unwrapped optional string." let implicitString: String = assumedString // 不需要感叹号
强制解析
var myString:String? myString = "Hello, Swift!" if myString != nil { // 强制解析 print( myString! ) }else{ print("myString 值为 nil") }
自动解析:
你可以在声明可选变量时使用感叹号(!)替换问号(?)。这样可选变量在使用时就不需要再加一个感叹号(!)来获取值,它会自动解析。
var myString:String! myString = "Hello, Swift!" if myString != nil { print(myString) }else{ print("myString 值为 nil") }
可选绑定:
使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。
var myString:String? myString = "Hello, Swift!" if let yourString = myString { print("你的字符串值为 - \(yourString)") }else{ print("你的字符串没有值") }
3、运算符
位运算符:
位运算符用来对二进制位进行操作,~,&,|,^分别为取反,按位与与,按位与或,按位与异或运算,如下表实例:
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
区间运算符
闭区间运算符:(a...b) 包括a和b
半开区间 :(a..
print("闭区间运算符:") for index in 1...5 { print("\(index) * 5 = \(index * 5)") } print("半开区间运算符:") for index in 1..<5 { print("\(index) * 5 = \(index * 5)") }