Swift 学习 --- 基础<一>
// Playground - noun: a place where people can play import UIKit var str = "Hello, playground" print("A"); print("A") // 如果同一行有有段代码用 ';'隔开 // 默认自带换行符 println("Alice"); println("Peter"); println("Tommy") //------------------------------基本数据类型------------------------------------- // 类型推断 let a = 10 var b = 20 print(a+b) // 关于整型,在32位系统自动推断Int32, 64位-->Int64 let maxNumberOfStudent = 50 var currentStudent: Int // 如果不给初值,必须要指定类型 在使用前必须给定初值(安全性的体现) currentStudent = 50 currentStudent++ currentStudent var score = 90.2 // 浮点型默认Double类型 var score2: Float = 90.2 // 精度低 在底层转换的时候,有偏差 var scoreSum = score + Double(score2) // 拒绝隐式转换,必须转成相同类型 转化规则 : Type (value) //------------------------------字符串类型------------------------------------- let name = "Alice" let char: Character = "m" // 默认生成字符串类型, 如果需要字符型,手动指定 let School = "school" let Class = "classA" let ourClass = loSchool + loClass // 拼接字符串, +重载运算符(来源于c++) let class_A = "A" let 范冰冰 = "班长" // Swift 支持Unicode编码,所以可以支持中文 let 💗 = "love" //------------------------------数组类型------------------------------------- // Swift 数组只能存储同一类型的数据 (实际上是可以存放不同类型的数据) var array = [1,2,3] let array2: [Int] = [1,2,3] // 指定类型 [value类型] let array3: Array<Int> = [1,2,3] let array4 = ["a","b","c"] // 增加 array.insert(1, atIndex: 0) array + array2 array.append(5) // 删除 array.removeLast() // 查询 array[0] = 10 print(array) let arr = [11,22,33,44,55,66] array += arr // 区域运算符 // ... 1....2 从1到2的闭区间 // ..< 1..< 左闭右开 arr[1..<2] arr[0...2] //--------------------------字典 (通常称为键值对)------------------------------- var dictionary = ["key": 333,"key1": 444] var dictionary2: Dictionary<String, Int> = ["key": 000,"key2": 111] // 指定类型 // 查询 dictionary2["key"] // 如果检测到字典中 没有这个键,且我们对起做了赋值操作, 系统就会做插入操作 dictionary["key3"] = 666 dictionary var index = dictionary.indexForKey("key") dictionary.removeAtIndex(index!) // var any: String = nil // 这样的赋值方式是不可行的 // 所以swift提供了<可选类型> optional :?: var stringO : String? = nil // 在类型后面加 '?' 证明是可选类型,此时可以为nil // 底层实现 : 会给该变量进行打包 如果有值的时候 some 修饰 无值时用null修饰 // 上面 (index!) 的'!'号就是对他进行解包 stringO = "string" stringO! += "ff" // !解包 使用的时候需要解包操作 stringO stringO?.toInt() // .toInt 方法将stringO转化为int型 var num: Int? // 当我们有意识 返回值可能为空,就需要将接收者,定义为可选类型 num = stringO?.toInt() //-------------------------- 元 祖 ------------------------------- // 用于储存不同类型的数据类型 使用圆括号 let status = (402,"Not Found") status.0 status.1 let (c,d) = status c d var status2: (num: Int, info: String) = status var status3: (Int,String) = status // 限定类型 status2.num status2.info //-------------------------- 分 支 ------------------------------- // if语句中的条件必须是bool值或者是bool表达式 var isOrNo = true // swift 中的bool只能是true false if isOrNo { println("true") } var count: Int? = nil count = 20 if let num = count { println("num = \(num)") // \() 将变量和变量名隔开 } //-------------------------- 循 环 ------------------------------- var num1 = 0 while num1 < 10 { println("num1 = \(num1)") num1++ } var num2 = 10 var num3 = 20 do { num2 + num3 num2++ } while num2 < 20 var num4 = 0 for num4 = 0 ; num4 < 10 ; num4++ { println("\(num4),num2") } var names = ["fangcheng","chenxuekai","yexinru"] for nameStr in names { println(nameStr) } // 默认前面是位置 后面是数组内的value // 枚举数组的位置和值,需要加关键字 --- enumerate for (index,nameStr) in enumerate(names) { println(nameStr) println(index) } // 枚举字典 不用加关键字 var nameDic = [11: "AAA", 22: "BBB", 33: "CCC"] for (key,value) in nameDic { println("\(key),\(value)") } // _占位符 for value in nameDic { println(value) } // 当我不想要下标 加个站位符 for (_, value) in nameDic { println(value) } for index_1 in names[0...1] { println(index_1) } //-------------------------- switch ------------------------------- var point = (3, 0) switch point { case (0, 0): println("原点") case (_, 0): println("x 轴"); fallthrough // 自带break 但我们不需要break的时候,就加这个 fallthrough case (0, _): println("y 轴") case (_, _): println("象限内") } let point2 = (3, 0) switch point2 { case (0, 0): println("原点") case (let x, 0) where x == 4: println(x) case (0, let y): println(y) // 当下面有声明的变量时,不能fallthrough case (let x, let y): println("\(x),\(y)") fallthrough default: println("其他") } var number_switch = 20 switch number_switch { case 1...10: println("1...10") case 11...21: println("11...20") default: println(">21") } for number_switch_enum in 1...100 { println(number_switch_enum) if number_switch_enum == 20 { break } } var vowel = "aaeifdsoufdsa" // 如果想要在打印元音之后, 就跳出循环 // 在循环前面加一个标记, break + 标记 用于打断循环 tempName: for vowel_str in vowel { switch vowel_str { case "a", "e", "i", "o", "u": println("元音字母") break tempName default: println("辅音字母") } } //---------------------------------------- 冒 泡 ------------------------------------------ var array_sort = [3,4,1,7,5,0,9,3,8] for var i = 0 ; i < array_sort.count ; i++ { for var j = 0 ; j < array_sort.count - i - 1; j++ { if array_sort[j] < array_sort[j+1] { var temp = array_sort[j] array_sort[j] = array_sort[j+1] array_sort[j+1] = temp } } println(array_sort) } var array_sort1 = [1,3,6,7,0,10] for var i = 0; i < array_sort1.count; i++ { for var j = 0; j < array_sort1.count - i - 1; j++ { if array_sort1[j] < array_sort1[j+1] { var temp = array_sort1[j] array_sort1[j] = array_sort1[j+1] array_sort1[j+1] = temp } } println(array_sort1) } array_sort1