Swift3 基础语法
来源:互联网 发布:opencv2.4.4 sift算法 编辑:程序博客网 时间:2024/06/05 00:59
学习swift3的笔记,可粘贴运行
override func viewDidLoad() { super.viewDidLoad() //1.可选类型 let myString1:String? = nil if myString1 != nil { print(myString1) }else{ print("字符串为 nil") } var myString2:String? myString2 = "Hello, Swift!" if myString2 != nil { // 强制解析 print( myString2! ) }else{ print("myString 值为 \(myString2)") } var myString3:String! myString3 = "Hello, Swift!" if myString3 != nil { print(myString3) }else{ print("myString 值为 \(myString3)") } /* 2.Bool 布尔型字面量的默认类型是 Bool。 布尔值字面量有三个值,它们是 Swift 的保留关键字: true 表示真。 false 表示假。 nil 表示没有值。 */ //3.for循环 print("闭区间运算符:") for index in 1...5 { print("\(index) * 5 = \(index * 5)") } print("半开区间运算符:") for index in 1..<5 { print("\(index) * 5 = \(index * 5)") } /* 4.循环控制语句 continue 语句 告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。 break 语句 中断当前循环。 fallthrough 语句 如果在一个case执行完后,继续执行下面的case,需要使用fallthrough(贯穿)关键字。 */ //5.字符串 // 使用字符串字面量创建空字符串 let stringA = "" if stringA.isEmpty { print( "stringA 是空的" ) } else { print( "stringA 不是空的" ) } // 实例化 String 类来创建空字符串 let stringB = String() if stringB.isEmpty { print( "stringB 是空的" ) } else { print( "stringB 不是空的" ) } // stringAa 可被修改 var stringAa = "欢迎光临" stringAa += "http://www.baidu.com" print( stringAa ) // stringBb 不能修改 let stringBb = String("欢迎光临") //stringBb += "http://www.runoob.com" 报错 print( stringBb ) //字符串连接 let constA = "欢迎光临:" let constB = "http://www.baidu.com" let stringAB = constA + constB print("\(stringAB) 的长度为\(stringAB.characters.count)") // 字符串的比较 var varA = "Hello, Swift!" let varB = "Hello, Swift!" if varA == varB { print( "\(varA) 与 \(varB) 是相等的" ) //相等 } else { print( "\(varA) 与 \(varB) 是不相等的" ) } //连接字符串 varA.append(varB) //Unicode 字符串 var unicodeString = "欢迎光临" print("UTF-8 编码: ") for code in unicodeString.utf8 { print("\(code) ") } print("\n") print("UTF-16 编码: ") for code in unicodeString.utf16 { print("\(code) ") } /* 1.isEmpty 判断字符串是否为空,返回布尔值 2.hasPrefix(prefix: String) 检查字符串是否拥有特定前缀 3.hasSuffix(suffix: String) 检查字符串是否拥有特定后缀。 4.Int(String) 转换字符串数字为整型。 实例: let myString: String = "256" let myInt: Int? = Int(myString) 5.String.characters.count 计算字符串的长度 6.utf8 您可以通过遍历 String 的 utf8 属性来访问它的 UTF-8 编码 7.utf16 您可以通过遍历 String 的 utf8 属性来访问它的 UTF-16 编码 8.unicodeScalars 您可以通过遍历String值的unicodeScalars属性来访问它的 Unicode 标量编码. 9. + 连接两个字符串,并返回一个新的字符串 10. += 连接操作符两边的字符串并将新字符串赋值给左边的操作符变量 11. == 判断两个字符串是否相等 12. < 比较两个字符串,对两个字符串的字母逐一比较。 13. != 比较两个字符串是否不相等。 */ //6. 字符,不能创建空的Character(字符) 类型变量或常量 var char1: Character = "A" char1 = "j" print("char1 的值为 \(char1)") //遍历字符串中的字符 for ch in "Hello".characters { print(ch) } //7.数组 //以下实例创建了一个类型为 Int ,大小为 3,初始值为 0 的空数组: var array = Array.init(repeating: 0, count: 3) array = [12,24,23]; var someInts:[Int] = [10,20,30] someInts.remove(at: 1) //移除某个值 someInts.append(50) //添加某个值 someInts[0] = 60 //修改某个值 print(array,someInts,array[0]) //遍历数组 for item in someInts { //不带入索引 print(item) } for (index, item) in someInts.enumerated() { // 带入索引 print("在 index = \(index) 位置上的值为 \(item)") } //合并数组 + let intsC = array + someInts print(intsC,"的个数为:\(intsC.count), 判断是否为空:\(intsC.isEmpty)") //8.字典 var someDict1 = [Int: String]() someDict1 = [1:"one",2:"two",3:"three"]; var someDict2: [String: String] = ["1":"one","2":"two","3":"three"]; var someDict3:[AnyHashable : Any] = ["1":"one",2:"two","3":40,4:"four"];//可变类型 print(someDict1,"访问字典元素:\(someDict1[1]),\(someDict2["1"]),\(someDict3[2]),\(someDict3["3"])") someDict1.updateValue("新值one", forKey: 1) //修改字典方法一 someDict1[2] = "新值two" //修改字典方法二 someDict1[4] = "新增four" //新增字典元素 someDict1.removeValue(forKey: 3) //删除字典元素方法一 someDict1[3] = nil // 删除字典元素方法二 print(someDict1,"someDict1含有字典元素个数为: \(someDict1.count)") //遍历字典 for (key, value) in someDict1 { // 遍历元素值 print("key:\(key)","value:\(value)") } for (key, value) in someDict1.enumerated() { //遍历整个元素,value包涵键值对 print("key:\(key)","value:\(value)") } let dictkeys = [Int](someDict1.keys) //获取所有字典的key let dictvalues = [String](someDict1.values) //获取所有字典的值 print(dictkeys,dictvalues,"判断字典是否为空:\(someDict1.isEmpty)") //9.函数 print(mult(no1: 10, no2: 3)) //带参数及返回值 print(minMax(array: [34,-3,56,25,7,45,847])) //元组作为函数返回值 print(pow(firstArg: 3, secondArg: 5)) //函数可添加局部参数名和外部参数名 vari(members: 12,23,4,5) //参数可变,参数类型可变函数 vari(members: "haha","hello") vari(members: [3,8]) vari(members: ["1":"one",2:"two","3":"three"]) var a = 20 var b = 80 swap(&a, &b) //变量参数:传入函数内修改有效并传出 print(a,b) let decrem = calcDecrement(forDecrement: 88) // 返回内嵌函数 print(decrem()) //调用内嵌函数 //10.闭包 let studname = { print("Swift 闭包实例。") } studname() let divide = {(val1: Int, val2: Int) -> Int in return val1 / val2 } let result = divide(200, 20) print (result) /* Swift 标准库提供了名为sorted的函数,会根据您提供的用于排序的闭包函数将已知类型数组中的值进行排序。 */ let names = ["AT", "AE", "D", "S", "BE"] let reversed = names.sorted( by: < ) // let reversed = names.sorted(by: backwards) //backwards可为闭包 print(reversed) // 以下是不使用尾随闭包进行函数调用 someFunctionThatTakesAClosure(closure: { // 闭包主体部分 print("以下是不使用尾随闭包进行函数调用") }) // 以下是使用尾随闭包进行函数调用,()可省略 someFunctionThatTakesAClosure() { // 闭包主体部分 print("以下是使用尾随闭包进行函数调用") } } func mult(no1: Int, no2: Int) -> Int { return no1*no2 } /* 注意 可选元组类型如(Int, Int)?与元组包含可选类型如(Int?, Int?)是不同的.可选的元组类型,整个元组是可选的,而不只是元组中的每个元素值。 */ func minMax(array: [Int]) -> (min: Int, max: Int) { var currentMin = array[0] var currentMax = array[0] for value in array[1..<array.count] { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) } func pow(firstArg a: Int, secondArg b: Int) -> Int { //firstArg 为外部参数名,a 为局部参数 var res = a for _ in 1..<b { res = res * a } print(res) return res } func vari<N>(members: N...){ //可变参数函数 for i in members { print(i) } } func swapTwoInts( a:inout Int, b:inout Int){ //变量参数:传入函数内修改有效并传出,关键字:inout let t = a a = b b = t } func calcDecrement(forDecrement total: Int) -> () -> Int { var overallDecrement = 10 func decrementer() -> Int { //内嵌函数 overallDecrement -= total return overallDecrement } return decrementer } func backwards(s1: String, s2: String) -> Bool { // 使用普通函数(或内嵌函数)提供排序功能,闭包函数类型需为(String, String) -> Bool。 return s1 < s2 } func someFunctionThatTakesAClosure(closure: () -> Void) { // 函数体部分 closure() // 回调 print("输出函数体") }
0 0
- swift3 基础语法(mutating)
- Swift3 基础语法
- Swift3-基础语法
- swift3基础
- iOS-Swift3常用语法
- Swift3.0语法变化
- swift3 语法摘要
- Swift3 基本语法
- Swift3语法修改
- Swift3.0 语法总结
- swift3.0语法变化
- swift3.0 语法
- swift3.0下闭包语法汇总
- Swift3.0基本语法02
- Swift3.0基本语法01
- Swift3.0基本语法02
- Swift3.0-基础知识点
- Swift3.0语法--字符串和字符
- Codeforces Round #382 (Div. 2) E. Ostap and Tree
- 【数论】【逆元】【贪心】HDU5976 Detachment
- 第十四周项目一数组大折腾(2)创建一个长度为10的整形数组并初始化,由后往前(由第9个元素向第0个元素方向)输出数组中所有元素的值,改变数组元素的值,令所有的数组加倍,输出改变后的值。
- linux下安装jdk的步骤和方法
- Android复习之旅--ViewPager(自动轮播条)
- Swift3 基础语法
- Python 基础 二
- POJ 2531(搜索剪枝)
- git命令 branch 切换远程分支Github
- intellij IDEA 启动tomcat时显示端口被占用
- servlet3.0 getPart()与getParts()获取上传文件
- Redis 主从复制
- CSS 设置字体大小用法介绍
- Java常考编程题(基础)--不断更新