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)- ...
随机推荐
- 针对MSHFlexGrid的一系列通用方法-项目中实践代码分享
1.给MSHFlexGrid填充数据通用方法 '自定义报表填充程序 fgrid Public Function ShowformfData(Resultset As ADODB.Recordset, ...
- 基于Docker搭建LNMP环境(转)
关于什么是docker,建议大家先上网查查有关的用法.如果您不了解,在这篇文章中,您可以简单的理解为他是一个轻量级的虚拟机. 一.docker安装mysql 首先,我们从仓库拉取一个MySql的镜像 ...
- jmeter 的java请求代码在main方法里面执行
1.新建一个java请求执行加法类 public class TestDemo { public int Tdemo(int a,int b){ int sum = 0; sum = a+b; ret ...
- Centos 二进制安装node.js
一.登录node的官网查看最新的稳定版,以及需要下载的Linux版本,你可以有多种Linux安装方式(源码安装,二进制安装等). 二.Node安装及配置 1.创建安装目录:创建目录node.js [r ...
- logstash 中多行合并
这里我之前是在input里面配置的多行合并,合并语法为: input { beats { type => beats port => 7001 codec => multiline ...
- C语言浮点数存储结构
float类型占四个字节,每个字节占8位,总共32位,其内存结构如下图: 31位为符号位:0表示正数,1表示负数 31~23位:共8位表示指数位,内存存储数据从0~2^8-1=255,由于指数可以是正 ...
- CentOS 7 安装开发者环境
在vagrant box中安装了基本的centos7的box,但是,该环境没有安装编译软件,所以要求自行安装. 1.查看群组安装的源包数量: yum group list ,搜索Development ...
- MySQL循环语句实例教程 mysql while循环测试
在mysql数据库中操作同样有循环语句操作,标准的循环方式: while 循环 . loop 循环和repeat循环.还有一种非标准的循环: goto. 鉴于goto 语句的跳跃性会造成使用的的思维混 ...
- [svc]arpping链路层检测
arping命令,测试链路层是否同 参考 yum install iputils -y arping - send ARP REQUEST to a neighbour host -b:用于发送以太网 ...
- 编译libevent源代码(Windows)
学习笔记,只是记录本次成功用libevent源代码进行编译.环境为MinGW+VS2008+Msys. 0.下载libevent库 http://libevent.org/ 下载stable稳定版的库 ...