zoukankan      html  css  js  c++  java
  • Swift 闭包(closure)

    Swift中的闭包,就是Objective-C中的Block, 其实两者是一个东西

    1.Closure变量的声明

      (1)Closure就是匿名函数,我们可以定义一个闭包变量,而这个闭包变量的类型就是我们上面介绍的“函数类型”。

      定义一个闭包变量其实就是定义一个特定函数类型的变量,方式如下。

      因为Closure变量没有赋初始值,所以我们把其声明为可选类型的变量。在使用时,用!强制打开即可。

        var myCloure0:((Int, Int) -> Int)?

      (2)我们还用另一种常用的声明闭包变量的方式。那就是使用关键字typealias定义一个特定函数类型,

      我们就可以拿着这个类型去声明一个Closure变量了,如下所示

        //定义闭包类型 (就是一个函数类型)

         typealias MyClosureType = (Int, Int) -> Int
         var myCloure:MyClosureType?

    2. 给Closure变量赋值

      给Closure变量赋值,其实就是把一个函数体赋值给一个函数类型的变量,和函数的定义区别不大。

      但是给闭包变量赋值的函数体中含有参数列表,并且参数列表和真正的函数体之间使用关键字in来分割。 

      闭包可选变量的调用方式与普通函数没什么两样,唯一不同的是这个函数需要用!来强制打开才可以使用。赋值和调用方式如下。

      

    myClosure = { (num1: int, num2: int) -> int  in 
          return num1 + num2;        
    }
    
    myClosure!(10, 10)
  • 相关阅读:
    bzoj 3262: 陌上花开
    hdu 5618 Jam's problem again
    bzoj 1176: [Balkan2007]Mokia
    bzoj 2683: 简单题
    Codevs 1080 线段树练习(CDQ分治)
    bzoj 3223: Tyvj 1729 文艺平衡树
    bzoj 1503: [NOI2004]郁闷的出纳员
    bzoj 1208: [HNOI2004]宠物收养所
    bzoj 1588: [HNOI2002]营业额统计
    bzoj 3224: Tyvj 1728 普通平衡树
  • 原文地址:https://www.cnblogs.com/xilanglang/p/5146833.html
Copyright © 2011-2022 走看看