Object-C--->Swift之(六)函数类型
2016-01-22 20:05
363 查看
认识函数类型
每个函数都有特定的函数类型函数类型是由函数的形参类型、->和返回值类型组成。
[code]例如: func Add(a:Int,b:Int){ ... } 该函数的函数类型为(Int,Int)->Void或者(Int,Int)->() func Add()->Int{ ... } 该函数的函数类型为()->Int func Add(){ ... } 该函数的函数类型为()->()或者()->Void func Add(a:Int,b:Int)->Int{ ... } 该函数的函数类型为(Int,Int)->Int
使用函数类型
定义变量
[code]定义变量,其类型为(Int,Int)->Int var myadd:(Int,Int)->Int func Add(a:Int,b:Int)->Int{ return a+b } myadd=Add print(myadd(3,4)) //输出7 当函数类型和我们定义的变量类型一致的时候我们就能够赋值成功。
函数类型作为形参类型
有些时候我们写一个函数,这个函数的大部分逻辑是十分确定的,但某些处理逻辑是无法确定的需要根据具体情况进行动态的改变。这个时候我们可以在函数中定义函数类型的形参,这样在调用该函数的时候传入不同的函数作为参数,从而动态的改变函数的功能。[code] 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
分析代码:我们在上面程序中,有两个变量的值是不变的,但对第二个变量进行变化是动态的,可能需要平方操作或者立方操作,也可能不需要任何操作。
[code]使用函数类型作为返回值类型 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 }
相关文章推荐
- 编码运行两不误!KZPlayground,Objective-C中的Playgrounds
- JS 解析map 格式JSON super.makeJSONObject(req, res, map);
- Realm Swift Objective-C 学习教程
- OBJECTIVE-C中nsstring的writetofile atomically参数解释
- Object-c 代码规范
- iOS开发之Objective-c的AES加密和解密算法的实现
- Objective-C:模拟按钮点击事件理解代理模式
- Objective-C中的@property和@synthesize用法
- Caused by: java.lang.ClassNotFoundException: net.sf.json.JSONObject
- JSONObject 解析json
- Git Unlink of file '.git/objects/pack/pack-***.pack' failed. 问题解决
- Objective-C新特性__nonnull和__nullable
- java Obect 转map map 转Object 工具类
- iOS开发笔记--Objective-C中根据函数名调用函数
- 轻松学习之一--Objective-C消息转发
- Passing Objects Between Android Activities
- 基于Fundation框架的简单管理系统
- android ValueAnimator ObjectAnimator
- 浅析C# 中object sender与EventArgs e
- Android属性动画欣赏——ObjectAnimator与动画监听事件