摘要:本文将带你了解iOS开发之Swift中的函数、断言、枚举等,希望本文对大家学IOS有所帮助。
函数与方法、枚举等的书写格式与用法较OC还是变化很大的。
一、函数 1.1 无返回值, 无形参 [javascript] view plain copy 1. func myTest2(){ 2. println("Hello") 3. } 1.2 有返回值,有形参 [javascript] view plain copy 1. func myTest1( num1:Int , num2:Int ) -> String{ 2. return String(num1 + num2) 3. } 1.3 外部参数. (相当于给参数起了个别名,方便识别记忆) [javascript] view plain copy 1. func myTest3 (myNum1 num1 :Int ,myNum2 num2: Int){ 2. println(num1 + num2) 3. } 4. myTest3(myNum1: 1, myNum2: 2) //调用 5. 6. func myTest4 (#num1 :Int ,#num2: Int){ //前面加#表示直接用形参名作为外部参数名 7. println(num1 + num2) 8. } 9. myTest4(num1: 2, num2: 3) 1.4 默认参数. (类似C++) [javascript] view plain copy 1. func myTest5(num1:Int , num2:Int = 10){ 2. println(num1+num2) 3. } 4. myTest5(1) 5. myTest5(1, num2: 22) //后面一个参数默认是以形参为外部参数名的 6. 7. func myTest6(num1:Int , _ num2:Int = 10){ //忽略形参的外部参数名, 在参数前加_ 8. println(num1+num2) 9. } 10. myTest6(1, 22) 1.5 常量与变量参数. (默认情况下,Swift的参数都是常量参数,是不能修改的) [javascript] view plain copy 1. //其他语言中, 如C语言是没有这个概念的. 可以随意修改 2. func myTest7(let num1:Int, num2:Int){ 3. // num2 = 10 //这句是错误的, 不能修改 4. println(num1+num2) 5. } 6. 7. func myTest8(var num1:Int, num2:Int){ //加上var即可, 变为变量参数. 可以修改 8. num1 = 10 9. println(num1+num2) 10. } 1.6 输入输出参数inout(作用类似于C语言中的指针) [javascript] view plain copy 1. //经典的交换函数 2. func swap(inout num1:Int ,inout num2:Int){ //在参数前加inout即可 3. var tmp = num1 4. num1 = num2 5. num2 = tmp 6. } 7. 8. var n1 = 10; 9. var n2 = 11; 10. swap(&n1, &n2) //加上类似C语言的取地址符号& 11. println("n1 = \(n1), n2 = \(n2)") 1.7 函数类型. (函数也看做是数据类型的一种,可以当参数,定义变量, 作为返回值等) [javascript] view plain copy 1. //注意:定义变量时不写的类型的话, 默认会自动判断类型. 当再次使用该变量时, 一定要注意类型匹配的问题 2. //如上面1.2中函数myTest1的类型即为 (Int , Int) -> String 3. var myFun1 = myTest1 //变量myFun的类型为(Int , Int) -> String 4. myFun1(10,10) //结果为20 5. 6. func myFun2(fun:(Int,Int)->String , num1:Int , num2:Int){//函数作为参数 7. println(fun(num1 , num2)) 8. } 9. myFun2(myFun1, 11, 11) 10. //同理,函数还可以作为返回值 1.8 函数重载(和Java差不多,只是Java中与返回值无关) [javascript] view plain copy 1. func testOverload(num1:Int){ 2. println("...") 3. } 4. 5. func testOverload(num1:Int , num2:Int) ->Double{ 6. println("...") 7. return 0.1 8. } 9. 10. func testOverload(num1:Int , num2:Int) -> Int{ 11. println("...") 12. return num1 + num2 13. } 14. 15. testOverload(10) 16. var dou:Double = testOverload(10,11) //一定要找个接收的具体类型来唯一标识 1.9 嵌套函数. (嵌套函数的作用域仅限于函数内部) [javascript] view plain copy 1. func doSomething(num:Int){ 2. func walk(){ println("working!") } 3. func eat(){ println("eating") } 4. 5. if num == 1{ 6. walk() 7. }else{ 8. eat() 9. } 10. } 11. 12. doSomething(1) 13. doSomething(2) 14. //eat() //不能直接在外面调用 二、断言 和C语言基本一样,没什么好说的 [cpp] view plain copy 1. var a = 10 2. assert(a>5, "Right") 三、枚举 不会像C语言中一样,默认会被赋值为0,1。。。 3.1枚举格式 [cpp] view plain copy 1. enum CompassPoint{ 2. case North //case表示新的一行成员被定义 3. case South 4. case East 5. case West 6. case A, B, C //多个成员也可以出现在同一行上 7. } 3.2 访问枚举 [cpp] view plain copy 1. var direct = CompassPoint.North 2. direct = .South //因为前面访问过, 后面自动推断. 可不写枚举名 3. //CompassPoint.A 3.3 枚举结合Switch使用 [cpp] view plain copy 1. switch direct{ 2. case .North: 3. println("Lots of planets have a north") 4. case .South: 5. println("Watch out for penguins") 6. case .East: 7. println("Where the sun rises") 8. case .West: 9. println("Where the skies are blue") 10. default: 11. println("OK") 12. } 3.4 关联枚举. 可关联变化的值 [cpp] view plain copy 1. enum Barcode{ 2. case UPCA(Int,Int,Int) //关联了3个参数 3. case QRCode(String) //关联了一个字符串 4. } 5. // 6. var productBarcode = Barcode.UPCA(0, 1, 2) //这样使用, 关联了3个数. 3.5 枚举原始值. [cpp] view plain copy 1. enum MyASCII : Character{ //定义类型了 2. case Tab = "\t" 3. case LineFeed = "\n" 4. } 5. 6. enum Planet: Int { 7. case Mercury = 1, Venus, Earth, Mars, Jupite, Saturn, Uranus, Neptune 8. } 9. //使用toRaw方法可以访问枚举的原始值 10. println(Planet.Venus.toRaw()) //值为2, 这个自动递增 11. //使用fromRaw可找到原始的枚举成员 12. println(Planet.fromRaw(2)) //返回的是可选的类型, 意味着不一定存在 评价:为旧东西增加了新功能,简化了OC中函数的写法。对于用惯了OC的还是稍有不适应。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号