Swift的函数与函数指针、闭包Closure等相关内容介绍
<span style="font-size:24px;">//函数
//demo1 无參数类型
func testConcat(){
println("測试函数");
} testConcat()//调用demo1 //demo2 多參数,一个返回值
/*
函数以func开头,表示一个函数
v1表示參数。String參数类型
->返回值类型String */
func testConcats(v1:String,v2:String) ->String{
return "\(v1) and \(v2)";
} //函数參数含有标签
func testConcatAndMark(v1:String,AndValue v2:String,AndNumber v3:String)->String{ return "\(v1),\(v2),\(v3)"
} //測试函数
func testFunction(){
let v = testConcats("hello", "world");
println(v);
let v2 = testConcatAndMark("david", AndValue: "dream", AndNumber: "good");
println(v2)
} testFunction(); //函数返回多值
func getInfo()->(String,String,Int){
return ("david","dream",100);
} let (v1,v2,v3)=getInfo();
println("v1=\(v1),v2=\(v2),v3=\(v3)"); //函数嵌套函数
func testFunctionInFunction()->Int{
var y = 10;
func add(){
y+=5;
}
add();
return y;
} let v6 = testFunctionInFunction(); //*******************************
//函数指针 *****五星难度
/*
返回值是(Int->Int)。是个函数地址
第一个int是參数类型,第二个int是返回值
*/
func getFuncPointer()->(Int->Int) {
func addOne(num:Int)->Int{
return num+1;
}
return addOne;//返回一个函数 地址
} var funPointer = getFuncPointer();
//funPointer是个函数指针
var v7 = funPointer(100);//函数的形式调用 func get()->(Int->String){
func post(count:Int)->String{
if count>50{
return "success";
}else{
return "failed"
}
}
return post;
} let v8 = get();//v8拿到的是get()函数的地址
let v9 = v8(58);//v9拿到的是get函数的返回值 //函数指针/地址作为參数,函数作为參数传给函数。函数的传递</span>
<span style="font-size:24px;">
</span>
<span style="font-size:24px;">//闭包是难点,闭包的作用主要是函数与函数之间的沟通,有点像Block</span>
<span style="font-size:24px;"></span><pre name="code" class="objc">//(num:Int)->Bool闭包參数类型
func hasColsureMatch(arr:Int[],value:Int,cb:(num:Int)->Bool){
for item in arr{
if cb(item){
return true;
}
}
return false;
} var ar = [20,9.100,34,89,39]; var v1 = hasClosureMatch(arr,40,{
(num:Int) -> Bool in
return num >= 40;
}); println("v1 is \(v1)");
Swift的函数与函数指针、闭包Closure等相关内容介绍的更多相关文章
- Swift中使用typealias定义一个闭包closure
在OC中我们定义一个Blocks是这样定义的: typedef void (^ZWProgressHUDCompletionBlock)(); 在Swift中定义一个闭包是这种: typealias ...
- Swift中文教程(四)--函数与闭包
原文:Swift中文教程(四)--函数与闭包 Function 函数 Swift使用func关键字来声明变量,函数通过函数名加小括号内的参数列表来调用.使用->来区分参数名和返回值的类型: fu ...
- 初探swift语言的学习笔记三(闭包-匿名函数)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29353019 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(7)|函数Functions与闭包Closure]
[易学易懂系列|rustlang语言|零基础|快速入门|(7)函数Functions与闭包Closure] 有意思的基础知识 函数Functions与闭包Closure 我们今天再来看看函数. 在Ru ...
- swift学习笔记2——函数、闭包
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- python 函数对象(函数式编程 lambda、map、filter、reduce)、闭包(closure)
1.函数对象 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 秉承着一切皆对象的理念,我们再次回头来看函数(function).函 ...
- 闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别
闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别 函数最常见的形式是具名函数(named function): function foo(){ con ...
- Scala 基础(十二):Scala 函数式编程(四)高级(二)参数(类型)推断、闭包(closure)、函数柯里化(curry)、控制抽象
1 参数(类型)推断 参数推断省去类型信息(在某些情况下[需要有应用场景],参数类型是可以推断出来的,如list=(1,2,3) list.map() map中函数参数类型是可以推断的),同时也可以 ...
- Swift 函数做参数和闭包做参数的一个细节差别
函数作参数,示例为传入一个String和一个添加前缀的函数,返回一个添加完前缀的String: func demo(str:String,addPrefix:(String)->String)- ...
随机推荐
- 容错处理库Polly使用文档
Design For Failure1. 一个依赖服务的故障不会严重破坏用户的体验.2. 系统能自动或半自动处理故障,具备自我恢复能力. 以下是一些经验的服务容错模式 超时与重试(Timeout an ...
- C#基础第九天-作业答案-储蓄账户(SavingAccount)和信用账户(CreditAccount)
class Bank { //Dictionary<long,Account> dictionary=new Dictionary<long,Account>(); DataT ...
- 电子证据 利用Kali进行wifi钓鱼实战详细教程
电子证据 利用Kali进行wifi钓鱼实战详细教程 一. Kali系统安装和必要软件安装: 1.Kali最新版可以来我这儿拿外置驱动和光盘装,目测用U盘装最新版有些问题,比较麻烦. 2.Kali更新源 ...
- MongoDB索引相关文章-摘自网络
索引类型 虽然MongoDB的索引在存储结构上都是一样的,但是根据不同的应用层需求,还是分成了唯一索引(unique).稀疏索引(sparse).多值索引(multikey)等几种类型. 唯一索引 唯 ...
- java FileReader/FileWriter读写文件
java FileReader/FileWriter读写字母和数字没问题,但读写汉字就乱码.记录下,后面找到解决方法再补上. public static void main(String[] args ...
- 微信小程序实现给循环列表添加点击样式实例
微信小程序有个属性hover-class='active',是指当点击列表元素时当按下鼠标左键会显示active样式,但是鼠标离开样式就会复原.可以参考以下解决方案,直接上代码: wxml: ? 1 ...
- Android 7.0 Dialog 无法显示的问题
app 在 Android 7.0 上登录的时候, Dialog 不显示了,但是半透明背景显示 经过搜索和对比,发现出现该问题是因为重写了 getResources() 方法造成的 .重写该方法是为了 ...
- xcode6 怎样下载ios7模拟器
1. 怎样下载ios7模拟器 点击xcode.选择"Preferences".选择"downloads",就能够看见IOS 7.1,只是下载有点慢. 2. 怎样 ...
- vim常忘命令
1.复制指定行到当前光标的下一行. #假设当前光标在10行,想把第5行复制到第11行 :5copy. #copy命令有2种简写'co'和't',所以也可以写成下面的格式 :5co. :5t. 参考:h ...
- spark repartition
https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-rdd-partitions.html http://s ...