【iOS】Swift之函数闭包,类似Objective-c中的Block

前言

  • 1.闭包是功能性子包含模块,可以在代码中被传递和使用。在Swift中的闭包与C和Obective-C 中的block 比较相似,通常我们这么使用的。

  • 2.闭包的第一种形式: 全局函数是一个有名字但不会捕获任何的的闭包,

{ 
(参数 : 类型) - > 返回类型 in
        执行方法
        return 返回类型;

 let arr = GetList( [1,2,3,4]), {(s:int) in return s>2} )
        println(arr)
}
  • 3.上面的代码可以看出,{(s:int) in return s>2}就是一个闭包的实现。GetList参数Pre:(int)->Bool 是一个函数,没有实现,在调用的时候传人闭包 {(s:int) in return s>2} 来实现具体的算法,{(s:int) in return s>2}闭包参数为整形,返回值为布尔类型;

示例

  • 1.跟在OC当中使用一样,我们的首先定义一个Block 类型,这里是定义一个闭包类型;
  • 2.声明一个block变量,同样的这里定义一个闭包函数变量;
///  这是一个函数闭包变量
typealias  myfunction = (SXstr:NSString) ->Void;
//  定义函数变量
var myBlock = myfunction?()
  • 3.这里示例在一个点击事件中,回调一个字符串,(SXstr: "你好!")作为示例
 /**
     在一个点击事件中传递闭包函数的变量:
     */
    func Tap()->Void
    {
       //值传递字符串
        myBlock!(SXstr: "你好!")
        self .dismissViewControllerAnimated(true, completion: nil)
    }
  • 4.函数作为值调用闭包函数。
    func Long(Block:myfunction)->Void
    {
        myBlock = Block;
    }
  • 5.调用闭包函数
  // 调用闭包函数
        myVC.Long { (SXstr) -> Void in
          
        print(SXstr)
           
   }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,281评论 19 139
  • 86.复合 Cases 共享相同代码块的多个switch 分支 分支可以合并, 写在分支后用逗号分开。如果任何模式...
    无沣阅读 1,481评论 1 5
  • 今天的博客算是比较基础的,还是那句话,基础这东西在什么时候都是最重要的。说到函数,只要是写过程序就肯定知道函数是怎...
    攞你命3OOO阅读 617评论 0 1
  • 以下翻译自Apple官方文档,结合自己的理解记录下来。翻译基于 swift 3.0.1 原文地址 Closure...
    艺术农阅读 1,650评论 0 3
  • 书摘 尽管“努力”是必须的,应当的,但可惜却不是天生的。每个人天生所拥有的是与“努力”相悖的一个习惯——“懒惰”。...
    TDann阅读 167评论 0 0