Object-C--->Swift之(六)函数类型
来源:互联网 发布:帝国cms分页样式修改 编辑:程序博客网 时间:2024/05/02 01:56
认识函数类型
每个函数都有特定的函数类型
函数类型是由函数的形参类型、->和返回值类型组成。
例如: func Add(a:Int,b:Int){ ... }该函数的函数类型为(Int,Int)->Void或者(Int,Int)->()func Add()->Int{ ...}该函数的函数类型为()->Intfunc Add(){ ...}该函数的函数类型为()->()或者()->Voidfunc Add(a:Int,b:Int)->Int{ ...} 该函数的函数类型为(Int,Int)->Int
使用函数类型
定义变量
定义变量,其类型为(Int,Int)->Int var myadd:(Int,Int)->Intfunc Add(a:Int,b:Int)->Int{ return a+b}myadd=Add print(myadd(3,4)) //输出7当函数类型和我们定义的变量类型一致的时候我们就能够赋值成功。
函数类型作为形参类型
有些时候我们写一个函数,这个函数的大部分逻辑是十分确定的,但某些处理逻辑是无法确定的需要根据具体情况进行动态的改变。这个时候我们可以在函数中定义函数类型的形参,这样在调用该函数的时候传入不同的函数作为参数,从而动态的改变函数的功能。
func add(var a:Int,var b:Int,fn:(Int)->Int)->Int { return a+fn(b) } //不对b进行改变 funcOnlyb(val :Int)->Int { return b; }//对b进行平方改变 func square(val:Int)->Int{ return b*b } 对b进行立方改变func cube (val:Int)->Int { return b*b*b } print(add(3,4,fn:Onlyb))//输出7 prin(add(3,4,fn:square))//输出19 print(add(3,4,fn:cube))//输出67
分析代码:我们在上面程序中,有两个变量的值是不变的,但对第二个变量进行变化是动态的,可能需要平方操作或者立方操作,也可能不需要任何操作。
使用函数类型作为返回值类型 func squar (val:Int)->Int { return val*val } func cube (val:Int)->Int { return val*val*val } func Onlyb (val:Int)Int { return b } //注意返回值类型为(Int)->Int func Math(#type:String)->(Int)->Int { switch(type) { case"square": return square case "Onlyb": returnOnlyb case "cube": return cube default: print("输入函数错误呀") } var math=Math(type:"cube") print(math(5))//输出125 }
1 0
- Object-C--->Swift之(六)函数类型
- Object-C--->Swift之(六)函数入门级讲解
- Object-C--->Swift之(二)可选类型
- Object-C--->Swift之(七)函数重载
- Object-C--->Swift之(一)元组(tuple)类型
- Object-C--->Swift之(七)嵌套函数与闭包
- Swift学习记录(Swift和Object-C混编之可选值类型的选择)
- swift学习之函数类型
- Object-C--->Swift之(八)枚举
- Object-C--->Swift之(十)存储属性
- Object-C--->Swift之(十一)属性观察者
- Object-C--->Swift之(七)丰富的函数形参功能
- Object-C 和 Swift 混编 之二 Swift 中调用 Object-C
- swift object-c 使用
- object-c与swift
- swift object-c互用
- 六.swift - 函数
- c语言基础(六)之类型
- iOS tabview 复用机制详解
- java.lang.IllegalThreadStateException: Thread already started
- UI基础整理-15
- Python学习笔记——基础篇(1): 变量及其类型
- 电子拍卖系统开发第四天
- Object-C--->Swift之(六)函数类型
- python爬hdu网页
- Educational Codeforces Round 6
- Linux 下 一些文件的权限
- [C++] 静态成员函数
- MFC---CFileDialog打开文件对话框
- tcp粘包和拆包、断包
- eclipse环境搭建之二:C++
- Android Button2.监听事件