iOS开发Swift篇—(八)函数(2)
iOS开发Swift篇—(八)函数(2)
一、函数类型
函数类型也是数据类型的一种,它由形参类型和返回值类型组成,格式是
(形参类型列表) -> 返回值类型
func sum(num1: Int, num2: Int) -> Int {
return num1 + num2
}
sum函数的函数类型是(Int, Int) -> Int
func printLine()
{
println("-----------")
}
printLine函数的函数类型有4种表示方法
(1)Void -> Void
(2)() -> ()
(3)Void -> ()
(4)() -> Void
二、利用函数类型定义变量
可以利用函数类型来定义变量,将来可以存储这种类型的函数
func sum(num1: Int, num2: Int) -> Int {
return num1 + num2
}
var fn: (Int, Int) -> Int = sum
fn(, ) // 返回30
由于Swift有类型推断机制,因此,也可以这么写
var fn = sum // fn以后所存储函数的类型就必须是(Int, Int) -> Int
三、函数作为参数
跟其他数据类型一样,函数也能当函数的参数
func printResult(fn: (Int, Int) -> Int, num1: Int, num2: Int)
{
println("运算结果是:%d", fn(num1, num2))
}
fn参数接收一个函数,这个函数必须返回Int、有2个Int类型的参数
func sum(num1: Int, num2: Int) -> Int {
return num1 + num2
}
func minus(num1: Int, num2: Int) -> Int {
return num1 - num2
}
printResult(sum, , ) //
printResult(minus, , ) //
四、函数作为返回值
跟其他数据类型一样,函数也能当函数的返回值
func goToWork() { println("去上班") }
func playFootball() { println("踢足球") }
func howToDo(day: Int) -> () -> () {
if day < {
return goToWork
} else {
return playFootball
}
}
var fn = howToDo()
fn()
// 踢足球
五、函数重载
函数重载:函数名相同,函数类型不同
下面的2个函数构成重载
(1)函数名:sum,函数类型:(Int, Int) -> Int
func sum(num1: Int, num2: Int) -> Int {
return num1 + num2
}
(2)函数名:sum,函数类型:(Int, Int, Int) -> Int
func sum(num1: Int, num2: Int, num3: Int) -> Int {
return num1 + num2 + num3
}
六、嵌套函数
全局函数:在全局作用域中定义的函数
嵌套函数:在某个函数体中定义的函数
代码示例:
func howToDo(day: Int) -> () -> () {
func goToWork() { println("去上班") }
func playFootball() { println("踢足球") }
if day < {
return goToWork
} else { return playFootball }
}
var fn = howToDo()
fn() // 去上班
goToWork()
注意:第10行是错误写法,嵌套函数的作用域仅限于定义嵌套函数的函数体内部
iOS开发Swift篇—(八)函数(2)的更多相关文章
- 李洪强iOS开发Swift篇—08_函数(2)
李洪强iOS开发Swift篇—08_函数(2) 一.函数类型 函数类型也是数据类型的一种,它由形参类型和返回值类型组成,格式是 (形参类型列表) -> 返回值类型 1 func sum(num1 ...
- 李洪强iOS开发Swift篇—07_函数
李洪强iOS开发Swift篇—07_函数 一.函数的定义 (1)函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } (2)形参列表的格式 ...
- iOS开发Swift篇—(七)函数(1)
iOS开发Swift篇—(七)函数 一.函数的定义 (1)函数的定义格式 func 函数名(形参列表) -> 返回值类型 { // 函数体... } (2)形参列表的格式 形参名1: 形参类型1 ...
- iOS开发Swift篇—(七)函数
iOS开发Swift篇—(七)函数 一.函数的定义 (1)函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } (2)形参列表的格式 形参名 ...
- iOS开发Swift篇—(一)简单介绍
iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...
- iOS开发Swift篇—(二)变量和常量
iOS开发Swift篇—(二)变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 ...
- iOS开发Swift篇—(四)运算符
iOS开发Swift篇—(四)运算符 一.运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=.-= 算术运算符:+.-.*./ 求余运算符:% 自增.自减运算符: ...
- iOS开发Swift篇—(十)方法
iOS开发Swift篇—(十)方法 一.简单说明 跟其他面向对象语言一样,Swift中的方法可以分为2大类: (1)实例方法(Instance Methods) 在OC中,实例方法以减号(-)开头 ( ...
- iOS开发Swift篇(02) NSThread线程相关简单说明
iOS开发Swift篇(02) NSThread线程相关简单说明 一 说明 1)关于多线程部分的理论知识和OC实现,在之前的博文中已经写明,所以这里不再说明. 2)该文仅仅简单讲解NSThread在s ...
随机推荐
- linux--------wdcp中的各种坑。
1.刚买的空间客服给安装了wdcplinux,结果上去一看PHP是5.2版本的,这不是搞笑嘛.然后就有了下面的升级: 复制这条命令回车然后敲Y就可以: wget http://soft.itbulu. ...
- sdutoj 2610 Boring Counting
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2610 Boring Counting Time ...
- ACM Coder [T1002] 一直wrong answer,不知道为什么。上代码!就对就对!
忘了改了什么,后来居然对了!做打不死的菜鸟! #include <stdio.h> #include <stdbool.h> #define arrayLength 20 #d ...
- 解决img标签间距问题
解决img标签间距问题 关于img标签间距问题:多个img之间有间距,包含img标签的div之间有间距. 代码如下: 1 <!doctype html> 2 <html lang=& ...
- MVC视图中读取ViewBag传递过来的HashTable表数据
视图中头部添加 @using System.Collections; 循环读取哈希表数据 <ul id="AccessView" class="sys_spec_t ...
- Microsoft Office Excel 不能访问文件及COM无法访问
Microsoft Office Excel 不能访问文件及COM无法访问 Microsoft Office Excel 不能访问文件“*.xls”. 可能的原因有: 1 文件名称或路径不存在. 2 ...
- 利用BMFont和NGUI制作字体集
Unity中常常需要制作字体,也算是Unity的基本优势吧!其实质就是BMFont和NGUI制作字体.这里把步骤介绍一下: 1.先下载BMFont这个工具 2.Font Settings 设置:(1 ...
- asp.net 分页-自己写分页控件
去年就发表过asp.net 分页-利用后台直接生成html分页 ,那种方法只是单纯的实现了分页,基本不能使用,那时就想写个自己的分页控件,无奈能力有限.最近有点时间了,就自己做出了这个分页控件.我承认 ...
- crawler4j源码学习(1):搜狐新闻网新闻标题采集爬虫
crawler4j是用Java实现的开源网络爬虫.提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫.下面实例结合jsoup,采集搜狐新闻网(http://news.sohu.com/)新闻标 ...
- Tiles & SiteMesh
Tiles & SiteMesh 这两天在给公司的新项目搭框架,在配tiles框架的时候发现一个小问题: 比如开发团队一共5人,每人10个页面,如果按照简单的tiles框架配置方法,每个 ...