博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
李洪强iOS开发Swift篇—08_函数(2)
阅读量:6995 次
发布时间:2019-06-27

本文共 1836 字,大约阅读时间需要 6 分钟。

李洪强iOS开发Swift篇—08_函数(2)

一、函数类型

函数类型也是数据类型的一种,它由形参类型和返回值类型组成,格式是

(形参类型列表) -> 返回值类型

1 func sum(num1: Int, num2: Int) -> Int {2     return num1 + num23 }

sum函数的函数类型是(Int, Int) -> Int

1 func printLine()2 {3     println("-----------")4 }

printLine函数的函数类型有4种表示方法

(1)Void -> Void 

(2)() -> ()

(3)Void -> ()

(4)() -> Void

 

二、利用函数类型定义变量

可以利用函数类型来定义变量,将来可以存储这种类型的函数

1 func sum(num1: Int, num2: Int) -> Int {2     return num1 + num23 }4 var fn: (Int, Int) -> Int = sum5 fn(10, 20) // 返回30

由于Swift有类型推断机制,因此,也可以这么写

  var fn = sum   // fn以后所存储函数的类型就必须是(Int, Int) -> Int

 

三、函数作为参数

跟其他数据类型一样,函数也能当函数的参数

1 func printResult(fn: (Int, Int) -> Int, num1: Int, num2: Int) 2 {3     println("运算结果是:%d", fn(num1, num2))4 }

fn参数接收一个函数,这个函数必须返回Int、有2个Int类型的参数

1 func sum(num1: Int, num2: Int) -> Int {2     return num1 + num23 }4 func minus(num1: Int, num2: Int) -> Int {5     return num1 - num26 }7 printResult(sum, 20, 10) // 308 printResult(minus, 20, 10) // 10

 

四、函数作为返回值

跟其他数据类型一样,函数也能当函数的返回值

1 func goToWork() { println("去上班") } 2 func playFootball() { println("踢足球") } 3 func howToDo(day: Int) -> () -> () { 4     if day < 6 { 5         return goToWork 6     } else { 7         return playFootball 8     } 9 }10 var fn = howToDo(7)11 fn() 12 // 踢足球

 

五、函数重载

函数重载:函数名相同,函数类型不同

下面的2个函数构成重载

(1)函数名:sum,函数类型:(Int, Int) -> Int

1 func sum(num1: Int, num2: Int) -> Int {2     return num1 + num23 }

(2)函数名:sum,函数类型:(Int, Int, Int) -> Int

1 func sum(num1: Int, num2: Int, num3: Int) -> Int {2     return num1 + num2 + num33 }

 

六、嵌套函数

全局函数:在全局作用域中定义的函数

嵌套函数:在某个函数体中定义的函数

代码示例:

1 func howToDo(day: Int) -> () -> () { 2     func goToWork() { println("去上班") } 3     func playFootball() { println("踢足球") } 4     if day < 6 { 5         return goToWork 6     } else { return playFootball } 7 } 8 var fn = howToDo(5) 9 fn() // 去上班10 goToWork()

 注意:第10行是错误写法,嵌套函数的作用域仅限于定义嵌套函数的函数体内部

 

 
 

转载地址:http://mpsvl.baihongyu.com/

你可能感兴趣的文章
c语言 获得按键,c语言获得键盘的按键
查看>>
c语言的无原则,与C语言“无关”的C语言
查看>>
鸿蒙系统和安装包,鸿蒙系统安装包
查看>>
android异步编程,Android异步操作----AsyncTask类
查看>>
ros android 栅格地图,ROS中的珊格地图——nav_msgs::OccupancyGrid
查看>>
ubuntu 开发android,Ubuntu for Android项目现已停止开发
查看>>
android v4 v7 v14,android support v7怎么导入源码 注意 是v7的 v4的那一套不管用
查看>>
c语言程序运算符及表达式试题,C语言_数据类型运算符及表达式_选择题无答案...
查看>>
html页脚自适应,自适应.html
查看>>
android如何用mumu模拟器,如何安装网易MuMu模拟器 MuMu模拟器怎么用
查看>>
html text transform,Uppercase within HTML tag vs CSS text-transform
查看>>
网页禁止访问html怎么办,web邮箱页面被禁止访问 怎么解决?
查看>>
163邮箱 java发送html邮件,java邮件发送 qq与163邮箱互发和qq和163邮箱发送其余邮箱实例...
查看>>
Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节
查看>>
高效数据同步工具rsync服务部署详解(上)
查看>>
企业数据库合规的最佳实践
查看>>
PowerShell查询和修改AD用户属性(ADSI属性)
查看>>
Forrester:2011年数据库安全市场概览
查看>>
来源于 一般讨论 分类 疯狂ios讲义之cocos2d中的动画
查看>>
6426C Lab4 部署和配置LDS
查看>>