<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等相关内容介绍的更多相关文章

  1. Swift中使用typealias定义一个闭包closure

    在OC中我们定义一个Blocks是这样定义的: typedef void (^ZWProgressHUDCompletionBlock)(); 在Swift中定义一个闭包是这种: typealias ...

  2. Swift中文教程(四)--函数与闭包

    原文:Swift中文教程(四)--函数与闭包 Function 函数 Swift使用func关键字来声明变量,函数通过函数名加小括号内的参数列表来调用.使用->来区分参数名和返回值的类型: fu ...

  3. 初探swift语言的学习笔记三(闭包-匿名函数)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29353019 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...

  4. [易学易懂系列|rustlang语言|零基础|快速入门|(7)|函数Functions与闭包Closure]

    [易学易懂系列|rustlang语言|零基础|快速入门|(7)函数Functions与闭包Closure] 有意思的基础知识 函数Functions与闭包Closure 我们今天再来看看函数. 在Ru ...

  5. swift学习笔记2——函数、闭包

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  6. python 函数对象(函数式编程 lambda、map、filter、reduce)、闭包(closure)

    1.函数对象 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 秉承着一切皆对象的理念,我们再次回头来看函数(function).函 ...

  7. 闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别

    闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别 函数最常见的形式是具名函数(named function): function foo(){ con ...

  8. Scala 基础(十二):Scala 函数式编程(四)高级(二)参数(类型)推断、闭包(closure)、函数柯里化(curry)、控制抽象

    1  参数(类型)推断 参数推断省去类型信息(在某些情况下[需要有应用场景],参数类型是可以推断出来的,如list=(1,2,3) list.map() map中函数参数类型是可以推断的),同时也可以 ...

  9. Swift 函数做参数和闭包做参数的一个细节差别

    函数作参数,示例为传入一个String和一个添加前缀的函数,返回一个添加完前缀的String: func demo(str:String,addPrefix:(String)->String)- ...

随机推荐

  1. css 温故而知新 字体方向 将文字竖着显示

    writing-mode: vertical-rl;

  2. jsonp原理和jquey jsonp原理实践

    $.ajax({ type: "get", async: false, url: "ajax.htm", dataType: "jsonp" ...

  3. 实现session(session数据)的共享,解决分布式session共享

    为什么要实现共享? 首先我们应该明白,为什么要实现共享,如果你的网站是存放在一个机器上,那么是不存在这个问题的,因为会话数据就在这台机器,但是如果你使用了负载均衡把请求分发到不同的机器呢?这个时候会话 ...

  4. vim快速指南

    vi编辑器有3种模式:命令模式.输入模式.末行模式.掌握这三种模式十分重要: 命令模式:vi启动后默认进入的是命令模式,任何模式下,按[Esc]键都可以返回命令模式.输入模式:可输入字符,在底部显示“ ...

  5. 重载tostring()方法重要性

    曾经知道继承于object的类都有这个toString方法,重来没在项目中使用过这方法,同一时候也没对该方法进行重载.在如今这个公司上班,才知道了toString方法的重要性. 并且也懂得了重载tos ...

  6. Java Base64 编码解码方案总结

    Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便.在实际应用上,Base64除了能将Binary资料可视化之外 ...

  7. (原创)C++11改进我们的程序之简化我们的程序(一)

    C++11在很多方面可以简化我们的程序开发,我会在“简化我们的程序”这一系列的博文中一一讲到,敬请关注.这次要讲的是:C++11如何通过获取函数模板的返回值类型来简化我们的程序.在谈到简化之前,我们先 ...

  8. (转)大白话讲解如何给github上项目贡献代码

    转自:https://site.douban.com/196781/widget/notes/12161495/note/269163206/ 2013-03-30 22:53:55   本文献给对g ...

  9. convert2utf8withbom

    很久以前给同事要的转码bash 当时windows和mac总是出现中文注释乱码的情况,让人心塞的难过.又因为是老项目,现有源码太多了,不可能改模板重新创建.只能跑一遍这个玩意儿了…… #!/bin/b ...

  10. sql乘法函数实现方式

    sql中有很多聚合函数,例如 COUNT.SUM.MIN 和 MAX. 但是唯独没有乘法函数,而很多朋友开发中缺需要用到这种函数,今天告诉大家一个不错的解决方案 logx+logy=logx*y 这是 ...