本文共 5636 字,大约阅读时间需要 18 分钟。
/// Copyright (c) 2015年 韩俊强. All rights reserved.//import Foundation// Swift当中的输出函数// println Swift2.0 之前使用的输出函数, 可以自动换行// print Swift2.0之前自动换行, Swift2.0之后可以自动换行println("Hello, World!")// 单行注释和以前一样// 块注释/* 块注释 /* 可以嵌套注释 */*//*// 如何声明一个常量 规则: let 常量名: 类型 = 值// Swift当中我们不必再代码语句的结尾处加分号, 但是如果一行中写了几句代码, 那么代码之间就要用分号隔开let a: Int = 5; let b: Int = 10// 如何声明一个变量 var 变量名: 类型 = 值// Character 字符型var c: Character = "a"println(c)// 常量的值不可以发生改变, 变量的值可以改变// a = 10 错误c = "b"// 命名规则// 我们可以使用大部分的特殊符号, 中文也可以, 数字, 字母, 下划线, 但是非法的Unicode编码, 数字符号, 标志符是不可以的let 小韩哥: String = "好帅"每日更新关注: 新浪微博// 类型推断// Swift 会根据我们给常量或者变量赋的值来推断我们常量或者变量的类型let 常量 = 10 // 根据推断: 常量是int类型var 变量 = 20 // 变量是一个int 类型// Swift是一门类型安全的语言, 我们不能给一个类型的变量赋给另一个类型// 变量 = 19.5 错误变量 = 30println(变量)// 数值字面量// 20, 10 , 字符串// 0b//let ab = 1011//println(ab)let ab = 0b1010println(ab)// 八进制值字面量let ac = 0o17println(ac)// 十进制字面量, 默认的数组就是十进制let ad = 18// 十六进制字面量 0x 开头let ae = 0xabcprintln(ae)// 字符串插值// Swift当中没有占位符, 我们可以以字符串插值的形式当做占位符 \(), 括号中存放常量或者变量的名字let af = "hello,wold"println("af = \(af)")// 类型转换let 浮点型: Float = 15.9let 整型: Int = 20// 不同类型不可以直接做运算// 浮点型转化成Int类型 Int()// Int类型转化为浮点型 Float()let result = Int(浮点型) + 整型// 打印最大值, 最小值println(Int8.max)println(Int16.min)println(UInt8.max)println(UInt8.min)// 类型别名的使用typealias newInt32 = Int32;println(newInt32.max)// 布尔值 只有true falsevar 布尔值 = trueprintln(布尔值)布尔值 = falseprintln(布尔值)// 元组// 多个不同类型的值组合成的一个复合值let 元组 = ("小明",28,95.5);// 取出元组里面的值// 通过元组名. 下标的形式取出元组的内容println(元组.0)println(元组.2)// 如果我们声明元组的时候,给元组里面的内容前加一个名字, 那么我们就可以通过 元组名.元素名字 的方式取出元组里面的内容let 小韩 = (身高: 170,年龄:25 )println(小韩.身高,小韩.年龄)// 元组的分解let (身高,年龄) = 小韩println(身高,年龄)// 可选类型// 可选类型是用来处理值缺失的情况, 一个变量声明成可选类型的话, 证明这个变量可能有值,也可能未空// 声明一个可选类型var str: String?println(str)str = "hello,good morning"println(str)// 我们要使用可选类型变量值的话,需要把可选类型里面的值解析出来, 方式:变量名 + ! ,这种方式叫做强制解析var aStr = "95588"var aIntofOptinal = aStr.toInt()println(aIntofOptinal)// 强制解析之前我们要确保变量有值, 如果没有值, 我们不能在可选类型后面 + !来强制解析var result1 = aIntofOptinal! + 10println(result1)// 隐式解析类型// 为了我们使用可选类型的时候, 不用发每次都用强制解析的方式取值, 我们可以在声明变量的时候在类型标注后面不用? 而用!的形式// for examplevar 隐式解析类型: Int!println(隐式解析类型)隐式解析类型 = 20;println(隐式解析类型)// 断言// 起到断点调试的作用var bStr: String?bStr = "忘赋值了"assert(bStr != nil, "字符串不为空")println(bStr!)*//*// 运算符// 根据操作数的不同, 运算符可以分为一元, 二元, 三元运算符// + - * / %// + let a = 3; let b = 5var c = a + bprintln("c = \(c)")// - c = b - aprintln(c)// *c = a * bprintln("c = \(c)")// /c = b / aprintln("c = \(c)")// %c = a % bprintln("c = \(c)")// 自增, 自减运算// ++var aNumber = 10// ++ 在前取新值, ++ 在后取旧址 , 不管++在变量的前面, 还是在变量的后面, 该变量都会自增1let result = ++aNumber + aNumber++ + ++aNumberprintln("result = \(result)")println(aNumber++)// --let result2 = --aNumber - aNumber-- + --aNumberprintln(--aNumber)println(result2)// 复合运算符// += -= /= %=// +=var 变量 = 10变量 += 5 // 变量 = 变量 + 5println(变量)// -=变量 -= 5println(变量)// /=变量 /= 2println(变量)// %=变量 %= 1println(变量)// 三目运算符 条件 ? 值1 : 值2 条件为真的时候取值1, 条件为假的时候取值2let maxNumber = 5; let minNumber = 3let result3 = maxNumber > minNumber ? maxNumber : minNumberprintln(result3)// 比较运算符 >, < , <= , >= ,== , !=if maxNumber > minNumber { println( "\(maxNumber) 比 \(minNumber) 大")}if maxNumber < minNumber { println("\(maxNumber) 比 \(minNumber) 小")}if maxNumber <= minNumber { println("\(maxNumber) 不比 \(minNumber) 大")}if maxNumber >= minNumber { println("\(maxNumber) 不比 \(minNumber) 小")}if maxNumber != minNumber { println("\(maxNumber) 不等于 \(minNumber) ")}if maxNumber == minNumber { println("\(maxNumber) 等于 \(minNumber)")}// 逻辑运算符, 逻辑与 &&, 逻辑或 || , 逻辑非 !// 注意 逻辑与 逻辑或 的短路现象// 逻辑与 运算符前面条件为假, 运算符后面的语句就不走(一假即真)// 逻辑或 运算符前面条件为真, 运算符后面的语句就不走(一真即真)// 逻辑非 取反var num = 10if num++ == 10 || num-- > 0 { println(num)}// 空合运算符 ?? var str = "123"var num3 = str.toInt()// 判断一个可选类型, 如果为空,就给一个常量赋值 567, 如果不为空, 就取这个可选类型变量解析出来的值// 等价于if num3 == nil { let result = 567 println(result)} else { let result = num3! println(result)}// 等价于let result4 = num3 == nil ? 567 : num3!println(result4)let result5 = num3 ?? 567println(result5)// 区间运算符// (a...b) 包含 a 到 b 范围内的数, 且包含 a 和 b// (a.. = Array()// 第二种var array1 = [Int]()// 第三种var array2 : [String] = Array()// OC里面创建数组var array3 = NSArray()var arrayOfBook = ["金瓶梅","玉女心经","玉蒲团","一路向西"]// 修改数组中的元素arrayOfBook[3] = "西游记"for element in arrayOfBook { println(element)}// 另一种方式for (index,value) in enumerate(arrayOfBook){ println((index,value)) }// Swift2.0之后写法 点语法//for (不知道,不知道2) in arrayOfBook.enumerate{// println((不知道,不知道2))//}//arrayOfBook[0...2] = ["三国演义","水浒传","红楼梦","通讯录"]for element in arrayOfBook { println(element)}// 插入元素arrayOfBook.insert("射雕英雄传", atIndex: 0)// 删除元素arrayOfBook.removeLast()for element in arrayOfBook { println(element)}println(arrayOfBook.capacity)// 删除所有元素// keepCapacity表示是否保持容量,如果参数为true的话, 同时把元素清为零,但是保留清空之前的空间, 如果参数为false 的话, 清空元素后每添加一个元素时,空间不够用时,会开辟添加上一次元素空间的2倍arrayOfBook.removeAll(keepCapacity: false)// 判断数组是否为空if arrayOfBook.isEmpty { println(arrayOfBook.capacity)}arrayOfBook.insert("text", atIndex: 0) println(arrayOfBook.capacity)// 字典// C语言的创建一个空字典方式var dict : Dictionary= Dictionary()var dict2 : [String : String] = Dictionary()// OC的形式var dict3 = NSDictionary()var studentOfDict = ["name" : "小明","age" : 18]// 遍历子典里面的所有的keyfor key in studentOfDict.keys { println(key)}// 遍历字典里所有的valuefor value in studentOfDict.values{ println(value)}// 给字典添加一个元素studentOfDict["adress"] = "天下第一楼"println(studentOfDict)// 删除一个元素studentOfDict.removeValueForKey("adress")println(studentOfDict)studentOfDict["age"] = nil// 遍历字典里面的key和valuefor (key,value) in studentOfDict { println((key,value)) }
转载地址:http://bqxca.baihongyu.com/