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)- ...
随机推荐
- Yii2 使用 faker 生成假数据(转)
测试过程中有时候需要生成大量的假数据,faker 是一个生成假数据的类库,可以生成姓名,电话,IP地址,密码,ISBN等等你能想到的或者你想不到的各种类型的假数据. Yii2.0已经集成该类库,不用再 ...
- 支付接口中常用的加密解密以及验签rsa,md5,sha
一.常用加密类型分类 1.对称加密:采用单钥对信息进行加密和解密,即同一个秘钥既可以对信息进行加密,也可以进行解密.此类型称之为对称加密.特点速度快,常用于对大量数据信息或文件加密时使用.常用例子:D ...
- jQueryUI modal dialog does not show close button (x) JQueryUI和BootStrap混用时候,右上角关闭按钮显示不出图标的解决办法
I had this problem and was able to resolve it with the declaration below. $.fn.bootstrapBtn = $.fn.b ...
- IOS 缓存方案(按需缓存 、 预缓存)及 低网速模拟
1,在设备中 设置开发者模式. 参照上面设置 自定义 添加.丢包率 35. 或者参照这个文章:http://ivoryxiong.org/devops/2013/05/24/ios_dev_handl ...
- JS location.href跳出框架打开新页面
后面在框架中,当判断登录失效后要返回登录页面,但登录页面却在框架内打开,我想让它直接跳出框架打开,这里不是打开新窗口. echo "<script language=\"ja ...
- Java常考面试题(四)
序言 双十一那天去我女朋友那了,11.11到11.13 漏了两天的内容,今天中午刚回来的,赶紧补一下前两天漏下的博文,我相信,坚持下来,会有成长的,等到出去实习那一天,肯定会很有帮助,会感谢现在自己的 ...
- 【Unity】4.4 添加角色控制器
分类:Unity.C#.VS2015 创建日期:2016-04-10 一.简介 设计完毕基本的场景后,一般都需要先运行看看效果如何,即先让场景"动起来",以方便观察不同的位置,而不 ...
- 【Android】1.2 创建Android模拟器
分类:C#.Android.VS2015: 创建日期:2016-01-20 调试手机应用程序一般先用模拟器来实现,只是因为每次都发布到手机上调试太麻烦了.当应用程序在模拟器上调试没错后,再发布到手机 ...
- 深入理解Linux内核-内存管理
内核如果给自己分配动态内存 动态内存:RAM的某些部分被永久打分配给内核,用来存放内核代码以及静态内核数据结构:剩余的部分被称为动态内存 连续物理内存区管理: 页框管理:1.页大小的选择,通常情况下主 ...
- Android软件开发之盘点全部Dialog对话框大合集(一)
对话框大合集 今天我用自己写的一个Demo和大家具体介绍一个Android中的对话框的使用技巧. 1.确定取消对话框 个button 通过调用setPositiveButton方法和 setNeg ...