Swift入门篇-闭包和函数

今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数

1:函数类型

函数类型
 var  变量 :(类型)->返回值 =函数名

说明:
1:函数名 表示函数地址
2:(类型)->返回值 表示函数类型
3:函数类型必须和函数名的参数和返回值一致

例子

/*

1:func 是函数关键字
2:Say是函数名,表示函数的地址
3:Say函数 参数是整形 返回值为布尔类型
*/

 func Say(num:Int)->Bool{ 

return num > 10 } var By:(Int)->Bool = Say 

/* 1:Say是函数名的地址,并且函数类型,参数为整形,返回值布尔类型2:(Int)->Bool 表示 函数类型,参数为整形 ,返回值为布尔类型。 即:By是函数变量(参数为整形,返回值为布尔类型) 指向函数名(Say) */ 

var b = By(12) //by(12)直接调用函数println(b) 

运行结果 true

2:闭包格式

 格式 :
  {
    (参数:类型) ->返回类型  in  

     执行方法

     return 返回类型
   }

 说明: 1;闭包主要指向函数类型 2:闭包的参数必须和函数类型的参数和返回值一致

例子

/*

函数Getlist说明
参数:
  1:第一个参数 整形集合变量
  2:第二参数,函数类型变量 参数为整形返回值布尔类型
返回值
  整形集合

*/

func GetList(arr:Int[] , pre:(Int)->Bool) ->Int[]{

   //定义一个空的可变整形集合
    var tempArr = Int[]()

    for temp in arr {

        if pre(temp){
            tempArr += temp;
        }
    }

    return tempArr;
}

/*
调用Getlist 说明
第一个参数 整形数组 [1,2,3,4]
第二个参数  闭包 来指向给 函数类型 。
{(s) in return s>2} 闭包类型说明,参数为整形,返回值为布尔类型
*/
let arr=GetList([1,2,3,4],{(s:Int) in return s>2})
println(arr)

运行结果
[3, 4]

3:闭包简写方法

  1;第一种简写 :省略 参数类型和括号

  2:第二种简写 : 省略 参数类型和括号,return关键字

  3:第三种简写 : 参数名称缩写 (用$0代表第一个参数,$1代表第二个参数)

/*

函数Getlist说明
参数:
  1:第一个参数 整形集合变量
  2:第二参数,函数类型变量 参数为整形返回值布尔类型
返回值
  整形集合

*/

func GetList(arr:Int[] , pre:(Int)->Bool) ->Int[]{

   //定义一个空的可变整形集合
    var tempArr = Int[]()

    for temp in arr {

        if pre(temp){
            tempArr += temp;
        }
    }

    return tempArr;
}

//第一种简写 :省略 参数类型和括号
var Arr = GetList([1,2,3,4],{s in return s>2})

//第二种简写 : 省略 参数类型和括号,return关键字
Arr = GetList([1,2,3,4], {s in s>2})

 //第三种简写 : 参数名称缩写

 Arr = GetList([1,2,3,4],{$0>2}) //其中$0表示第一个参数

println(Arr)

以上3种用法的运行结果为

[3, 4]

4:尾随闭包

官方定义:尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用

/*

1: 函数 Fuction 的参数 函数类型
2: 参数为函数类型,函数类型,参数为空,返回值为空

*/

func Fuction(closure: () -> ()) {
    println("无参数,无返回值的韩式类型")
}

//-----------------第一种调用方法------------
/*
调用函数Fuction
1:参数为闭包
2:闭包的参数为空,返回值为空

*/
Fuction({

})

//-----------------第二种调用方法------------

Fuction() {

}

以上2种调用方法的运行结果都是

无参数,无返回值的韩式类型

后面的文章,我回陆续把我学习到swift语言的知识写出来形成一个系列。由于是新语言,难免有不足,欢迎给我提出意见。也可以加我QQ 1436051108一起讨论,如果您有什么问题,也可以直接在QQ留言发给我,我看到之后第一时间回复您

最后总结一下。送上一直思维导图,作为文章的结束

时间: 2024-10-25 20:12:50

Swift入门篇-闭包和函数的相关文章

swift入门篇-函数

今天给大家介绍 swift函数,swift函数和c#,js的写法大致一直,但是与object-c写法有很大不同点.废话不多说,直接开始了. 1:函数  --常量参数 func 函数名( 参数变量:类型 ,参数变量:类型...){} 说明: 1: func 是函数关键字 2:{} 函数体 3: 参数变量是默认常量类型,不能在函数函数体里面直接修改 即 func A (value:String)  与 func A (let value:String)写法是相同的,即value 是常量. 例子 /*

Swift入门篇-集合

一:数组 一:可变数组 定义:数组使用有序列表存储相同类型的多重数据. 格式: 第一种格式 var 变量: 类型[] = [变量值,变量值,...] 第二种格式 var 变量 =[变量值,变量值,...] 说明: 1:[变量值,变量值...] 这样表示数组 ,前提是 变量值的类型必须一值.(和其他语言有所不同) 2:上面两种格式都是定义一个数组,数组中的变量值的类型必须一致 3:第一种格式定义的数组,是直接定义数组,第二种格式定义的数组 是编译器通过类型值推导出是数组格式 注意点 1:常量关键字

Swift入门篇-Hello World

提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要升级系统和升级开发工具和去啃苹果开发文档,也时常关注一些写swift的文章.自己也边学swift,边做了一些小例子玩.个人感觉语法精炼,用起来还是很爽的. 但是个人觉得开发工具还是有很多不足(如自动提示有时候不出现),希望苹果在发布正式版的时候能修复的更好一点,在后面我会把我犯错的经历写下来. 今天

Swift入门篇-基本类型(1)

博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 今天遇到了一个很烦的事情是,早上10点钟打开电脑,一直都进入系统(我的系统  mac OS X Yosemite 10.10 系统),一直卡在登陆界面上进不去,心里想苹果新系统这么脆弱,现在很多软件不兼容就算了,搞的我还进不了系统,真是郁闷.然后在google 上搜索,google也打不开(真是悲催, 据说"组织" 要开会,大家先不要用google).然后用"度娘"搜索,搜了半天,终于找到

Swift入门篇-基本类型(3)

一:元组 格式 变量或常量关键字 元组变量 = ( 变量,变量, -) 说明: 1: 元组变量还是一个变量,只不过表现方式和其他变量不一样 2:()括号里面可以放入N个变量组成 例子: import Foundation /* A是元组变量,()里面放着 整形 和字符串 元组类型为 整形和字符串 组成 */ var A = (1,"swift")//元组变量A 由 整形和字符串 组成 println(A) 运行结果 (1, swift) mport Foundation var B =

IOS开发语言Swift入门连载---闭包

IOS开发语言Swift入门连载-闭包 闭包是自包含的函数代码块,可以在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 lambdas 函数比较相似. 闭包可以捕获和存储其所在上下文中任意常量和变量的引用. 这就是所谓的闭合并包裹着这些常量和变量,俗称闭包.Swift 会为您管理在捕获过程中涉及到的所有内存操作. 注意: 如果您不熟悉捕获(capturing)这个概念也不用担心,您可以在 值捕获 章节对其进行详细了

Swift入门篇-结构体

前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中是灰常重要的一部分,如果您很好的掌握结构体,在后面ios开发中,会理解的更加清楚. 一:结构体声明 格式: struct 结构体名 { } 说明: 1: struct 是定义结构体的关键字 例子 /* 1:struct 是结构体的关键字 2:student 结构体名称 3:student() 创建一

Swift入门篇-基本类型(2)

现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是我也觉得语言都没有发布几天,就赶忙去翻译书籍和Swift视频,然后讲SWift语言多么优美和多么好.我个人觉得他们都没有静下心来,去敲代码和研究Swift语言到底好在那里,而急于去翻译 未免也太草率了. 今天主要分享的是 swift中基本类型的 下半部分.如果您对 SWift 中变量和常量 不是很清

Swift入门篇-循环语句

开始继续分享swift入门篇 中的循环语句. 一:循环语句 1:for 用法 2: for in 用法 3: while 用法 4: do while 用法 for 的用法 一般格式 常见格式:(for格式很多) for 变量 ; 变量<某个值 ; 变量++ 例子 // ------for 的一种用法 for var i = 0 ; i<5 ;i++ { println("i=\(i)") } //-------for 的二种用法 var j = 0 for j = 0 ;