Error[8]: Undefined offset: 191, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述 原创文章,欢迎转载。转载请注明:关东升的博客   我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。 Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。   使用闭包表达式 Swift中的闭包表达式很灵活,其标准语法格式如下: { (参数列表) ->返回值类型 in     

原创文章,欢迎转载。转载请注明:关东升的博客

我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。

Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。

使用闭包表达式

Swift中的闭包表达式很灵活,其标准语法格式如下:

{ (参数列表) ->返回值类型 in

语句组

}

其中,参数列表与函数中的参数列表形式一样,返回值类型类似于函数中的返回值类型,但不同的是后面有in关键字。

Swift提供了多种闭包简化写法,我来介绍下面几种不同形式:

1、类型推断简化

类型推断是Swift的强项,Swift可以根据上下文环境推断出参数类型和返回值类型。以下代码是标准形式的闭包:

{(a:Int,b:Int) -> Intin

return a + b

}

Swift能推断出参数abInt类型,返回值也是Int类型。简化形式如下:

{(a,b) in return a + b }

{a,b in return a + b } //参数列表括号也可以省略

2、隐藏return关键字

在闭包内部语句组只有一条语句,如return a + b等,那么这种语句都是返回语句。前面的关键字return可以省略,省略形式如下:

{a,b in a + b }

使用这种简化方式修改后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {    var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = {a,b in a + b } //return关键字省略了    default:        result = {a,b in a - b } //return关键字省略了    }    return result}

省略的前提是闭包中只有一条return语句。

3、省略参数名称

Swift提供了参数名省略功能,我们可以用来指定闭包中参数,指代第一个参数,指代第二个参数,指代第三个参数,以此类推$n+1指代第n个参数。使用参数名

省略

参数列表Swift功能,在闭包中必须省略能够推断出这些缩写参数的类型。参数列表省略了,定义,in关键字也需要省略。参数名省略之后如下所示:{ + }

使用参数名省略后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {     var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = { + } //采用了参数名省略    default:        result = { - } //采用了参数名省略    }    return result} let f1:(Int,Int)-> Int = calculate("+")print("10 + 5 = \(f1(10,5))") let f2:(Int,Int)-> Int = calculate("-")print("10 - 5 = \(f2(10,5))")

4

、使用闭包返回值

闭包表达本质上是函数类型,是有返回值的,我们可以直接在表达式中使用闭包的返回值。重新修改

add

sub

闭包,示例代码如下:

let c1:Int = {(a:Int,b:Int) -> Int in                 return a + b               }(10,5)    print("10 + 5 = \(c1)") 
解释:给

c1

赋值,后面是一个闭包表达式。但是闭包表达式不能直接赋值给
c1 ,因为

c1Int类型,需要闭包的返回值。这就需要在闭包结尾的大括号后面接一对小括号(10,5),通过小括号(10,5)为闭包传递参数。

欢迎关注关东升新浪微博

@tony_

关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

更多精品iOS

Cocos
、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php[+++][+++][+++][+++][+++]

总结

以上是内存溢出为你收集整理的Swift 2.0学习笔记(Day 22)——闭包那些事儿!全部内容,希望文章能够帮你解决Swift 2.0学习笔记(Day 22)——闭包那些事儿!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 192, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述 原创文章,欢迎转载。转载请注明:关东升的博客   我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。 Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。   使用闭包表达式 Swift中的闭包表达式很灵活,其标准语法格式如下: { (参数列表) ->返回值类型 in     

原创文章,欢迎转载。转载请注明:关东升的博客

我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。

Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。

使用闭包表达式

Swift中的闭包表达式很灵活,其标准语法格式如下:

{ (参数列表) ->返回值类型 in

语句组

}

其中,参数列表与函数中的参数列表形式一样,返回值类型类似于函数中的返回值类型,但不同的是后面有in关键字。

Swift提供了多种闭包简化写法,我来介绍下面几种不同形式:

1、类型推断简化

类型推断是Swift的强项,Swift可以根据上下文环境推断出参数类型和返回值类型。以下代码是标准形式的闭包:

{(a:Int,b:Int) -> Intin

return a + b

}

Swift能推断出参数abInt类型,返回值也是Int类型。简化形式如下:

{(a,b) in return a + b }

{a,b in return a + b } //参数列表括号也可以省略

2、隐藏return关键字

在闭包内部语句组只有一条语句,如return a + b等,那么这种语句都是返回语句。前面的关键字return可以省略,省略形式如下:

{a,b in a + b }

使用这种简化方式修改后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {    var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = {a,b in a + b } //return关键字省略了    default:        result = {a,b in a - b } //return关键字省略了    }    return result}

省略的前提是闭包中只有一条return语句。

3、省略参数名称

Swift提供了参数名省略功能,我们可以用来指定闭包中参数,指代第一个参数,指代第二个参数,指代第三个参数,以此类推$n+1指代第n个参数。使用参数名

省略

参数列表Swift功能,在闭包中必须省略能够推断出这些缩写参数的类型。参数列表省略了,定义,in关键字也需要省略。参数名省略之后如下所示:{ + }

使用参数名省略后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {     var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = { + } //采用了参数名省略    default:        result = { - } //采用了参数名省略    }    return result} let f1:(Int,Int)-> Int = calculate("+")print("10 + 5 = \(f1(10,5))") let f2:(Int,Int)-> Int = calculate("-")print("10 - 5 = \(f2(10,5))")

4

、使用闭包返回值

闭包表达本质上是函数类型,是有返回值的,我们可以直接在表达式中使用闭包的返回值。重新修改

add

sub

闭包,示例代码如下:

let c1:Int = {(a:Int,b:Int) -> Int in                 return a + b               }(10,5)    print("10 + 5 = \(c1)") 
解释:给

c1

赋值,后面是一个闭包表达式。但是闭包表达式不能直接赋值给
c1 ,因为

c1Int类型,需要闭包的返回值。这就需要在闭包结尾的大括号后面接一对小括号(10,5),通过小括号(10,5)为闭包传递参数。

欢迎关注关东升新浪微博

@tony_

关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

更多精品iOS

Cocos
、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php[+++][+++][+++][+++]

总结

以上是内存溢出为你收集整理的Swift 2.0学习笔记(Day 22)——闭包那些事儿!全部内容,希望文章能够帮你解决Swift 2.0学习笔记(Day 22)——闭包那些事儿!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 193, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述 原创文章,欢迎转载。转载请注明:关东升的博客   我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。 Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。   使用闭包表达式 Swift中的闭包表达式很灵活,其标准语法格式如下: { (参数列表) ->返回值类型 in     

原创文章,欢迎转载。转载请注明:关东升的博客

我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。

Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。

使用闭包表达式

Swift中的闭包表达式很灵活,其标准语法格式如下:

{ (参数列表) ->返回值类型 in

语句组

}

其中,参数列表与函数中的参数列表形式一样,返回值类型类似于函数中的返回值类型,但不同的是后面有in关键字。

Swift提供了多种闭包简化写法,我来介绍下面几种不同形式:

1、类型推断简化

类型推断是Swift的强项,Swift可以根据上下文环境推断出参数类型和返回值类型。以下代码是标准形式的闭包:

{(a:Int,b:Int) -> Intin

return a + b

}

Swift能推断出参数abInt类型,返回值也是Int类型。简化形式如下:

{(a,b) in return a + b }

{a,b in return a + b } //参数列表括号也可以省略

2、隐藏return关键字

在闭包内部语句组只有一条语句,如return a + b等,那么这种语句都是返回语句。前面的关键字return可以省略,省略形式如下:

{a,b in a + b }

使用这种简化方式修改后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {    var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = {a,b in a + b } //return关键字省略了    default:        result = {a,b in a - b } //return关键字省略了    }    return result}

省略的前提是闭包中只有一条return语句。

3、省略参数名称

Swift提供了参数名省略功能,我们可以用来指定闭包中参数,指代第一个参数,指代第二个参数,指代第三个参数,以此类推$n+1指代第n个参数。使用参数名

省略

参数列表Swift功能,在闭包中必须省略能够推断出这些缩写参数的类型。参数列表省略了,定义,in关键字也需要省略。参数名省略之后如下所示:{ + }

使用参数名省略后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {     var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = { + } //采用了参数名省略    default:        result = { - } //采用了参数名省略    }    return result} let f1:(Int,Int)-> Int = calculate("+")print("10 + 5 = \(f1(10,5))") let f2:(Int,Int)-> Int = calculate("-")print("10 - 5 = \(f2(10,5))")

4

、使用闭包返回值

闭包表达本质上是函数类型,是有返回值的,我们可以直接在表达式中使用闭包的返回值。重新修改

add

sub

闭包,示例代码如下:

let c1:Int = {(a:Int,b:Int) -> Int in                 return a + b               }(10,5)    print("10 + 5 = \(c1)") 
解释:给

c1

赋值,后面是一个闭包表达式。但是闭包表达式不能直接赋值给
c1 ,因为

c1Int类型,需要闭包的返回值。这就需要在闭包结尾的大括号后面接一对小括号(10,5),通过小括号(10,5)为闭包传递参数。

欢迎关注关东升新浪微博

@tony_

关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

更多精品iOS

Cocos
、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php[+++][+++][+++]

总结

以上是内存溢出为你收集整理的Swift 2.0学习笔记(Day 22)——闭包那些事儿!全部内容,希望文章能够帮你解决Swift 2.0学习笔记(Day 22)——闭包那些事儿!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 194, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述 原创文章,欢迎转载。转载请注明:关东升的博客   我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。 Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。   使用闭包表达式 Swift中的闭包表达式很灵活,其标准语法格式如下: { (参数列表) ->返回值类型 in     

原创文章,欢迎转载。转载请注明:关东升的博客

我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。

Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。

使用闭包表达式

Swift中的闭包表达式很灵活,其标准语法格式如下:

{ (参数列表) ->返回值类型 in

语句组

}

其中,参数列表与函数中的参数列表形式一样,返回值类型类似于函数中的返回值类型,但不同的是后面有in关键字。

Swift提供了多种闭包简化写法,我来介绍下面几种不同形式:

1、类型推断简化

类型推断是Swift的强项,Swift可以根据上下文环境推断出参数类型和返回值类型。以下代码是标准形式的闭包:

{(a:Int,b:Int) -> Intin

return a + b

}

Swift能推断出参数abInt类型,返回值也是Int类型。简化形式如下:

{(a,b) in return a + b }

{a,b in return a + b } //参数列表括号也可以省略

2、隐藏return关键字

在闭包内部语句组只有一条语句,如return a + b等,那么这种语句都是返回语句。前面的关键字return可以省略,省略形式如下:

{a,b in a + b }

使用这种简化方式修改后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {    var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = {a,b in a + b } //return关键字省略了    default:        result = {a,b in a - b } //return关键字省略了    }    return result}

省略的前提是闭包中只有一条return语句。

3、省略参数名称

Swift提供了参数名省略功能,我们可以用来指定闭包中参数,指代第一个参数,指代第二个参数,指代第三个参数,以此类推$n+1指代第n个参数。使用参数名

省略

参数列表Swift功能,在闭包中必须省略能够推断出这些缩写参数的类型。参数列表省略了,定义,in关键字也需要省略。参数名省略之后如下所示:{ + }

使用参数名省略后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {     var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = { + } //采用了参数名省略    default:        result = { - } //采用了参数名省略    }    return result} let f1:(Int,Int)-> Int = calculate("+")print("10 + 5 = \(f1(10,5))") let f2:(Int,Int)-> Int = calculate("-")print("10 - 5 = \(f2(10,5))")

4

、使用闭包返回值

闭包表达本质上是函数类型,是有返回值的,我们可以直接在表达式中使用闭包的返回值。重新修改

add

sub

闭包,示例代码如下:

let c1:Int = {(a:Int,b:Int) -> Int in                 return a + b               }(10,5)    print("10 + 5 = \(c1)") 
解释:给

c1

赋值,后面是一个闭包表达式。但是闭包表达式不能直接赋值给
c1 ,因为

c1Int类型,需要闭包的返回值。这就需要在闭包结尾的大括号后面接一对小括号(10,5),通过小括号(10,5)为闭包传递参数。

欢迎关注关东升新浪微博

@tony_

关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

更多精品iOS

Cocos
、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php[+++][+++]

总结

以上是内存溢出为你收集整理的Swift 2.0学习笔记(Day 22)——闭包那些事儿!全部内容,希望文章能够帮你解决Swift 2.0学习笔记(Day 22)——闭包那些事儿!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 195, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述 原创文章,欢迎转载。转载请注明:关东升的博客   我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。 Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。   使用闭包表达式 Swift中的闭包表达式很灵活,其标准语法格式如下: { (参数列表) ->返回值类型 in     

原创文章,欢迎转载。转载请注明:关东升的博客

我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。

Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。

使用闭包表达式

Swift中的闭包表达式很灵活,其标准语法格式如下:

{ (参数列表) ->返回值类型 in

语句组

}

其中,参数列表与函数中的参数列表形式一样,返回值类型类似于函数中的返回值类型,但不同的是后面有in关键字。

Swift提供了多种闭包简化写法,我来介绍下面几种不同形式:

1、类型推断简化

类型推断是Swift的强项,Swift可以根据上下文环境推断出参数类型和返回值类型。以下代码是标准形式的闭包:

{(a:Int,b:Int) -> Intin

return a + b

}

Swift能推断出参数abInt类型,返回值也是Int类型。简化形式如下:

{(a,b) in return a + b }

{a,b in return a + b } //参数列表括号也可以省略

2、隐藏return关键字

在闭包内部语句组只有一条语句,如return a + b等,那么这种语句都是返回语句。前面的关键字return可以省略,省略形式如下:

{a,b in a + b }

使用这种简化方式修改后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {    var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = {a,b in a + b } //return关键字省略了    default:        result = {a,b in a - b } //return关键字省略了    }    return result}

省略的前提是闭包中只有一条return语句。

3、省略参数名称

Swift提供了参数名省略功能,我们可以用来指定闭包中参数,指代第一个参数,指代第二个参数,指代第三个参数,以此类推$n+1指代第n个参数。使用参数名

省略

参数列表Swift功能,在闭包中必须省略能够推断出这些缩写参数的类型。参数列表省略了,定义,in关键字也需要省略。参数名省略之后如下所示:{ + }

使用参数名省略后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {     var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = { + } //采用了参数名省略    default:        result = { - } //采用了参数名省略    }    return result} let f1:(Int,Int)-> Int = calculate("+")print("10 + 5 = \(f1(10,5))") let f2:(Int,Int)-> Int = calculate("-")print("10 - 5 = \(f2(10,5))")

4

、使用闭包返回值

闭包表达本质上是函数类型,是有返回值的,我们可以直接在表达式中使用闭包的返回值。重新修改

add

sub

闭包,示例代码如下:

let c1:Int = {(a:Int,b:Int) -> Int in                 return a + b               }(10,5)    print("10 + 5 = \(c1)") 
解释:给

c1

赋值,后面是一个闭包表达式。但是闭包表达式不能直接赋值给
c1 ,因为

c1Int类型,需要闭包的返回值。这就需要在闭包结尾的大括号后面接一对小括号(10,5),通过小括号(10,5)为闭包传递参数。

欢迎关注关东升新浪微博

@tony_

关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

更多精品iOS

Cocos
、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php[+++]

总结

以上是内存溢出为你收集整理的Swift 2.0学习笔记(Day 22)——闭包那些事儿!全部内容,希望文章能够帮你解决Swift 2.0学习笔记(Day 22)——闭包那些事儿!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Swift 2.0学习笔记(Day 22)——闭包那些事儿!_app_内存溢出

Swift 2.0学习笔记(Day 22)——闭包那些事儿!

Swift 2.0学习笔记(Day 22)——闭包那些事儿!,第1张

概述 原创文章,欢迎转载。转载请注明:关东升的博客   我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。 Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。   使用闭包表达式 Swift中的闭包表达式很灵活,其标准语法格式如下: { (参数列表) ->返回值类型 in     

原创文章,欢迎转载。转载请注明:关东升的博客

我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。

Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。

使用闭包表达式

Swift中的闭包表达式很灵活,其标准语法格式如下:

{ (参数列表) ->返回值类型 in

语句组

}

其中,参数列表与函数中的参数列表形式一样,返回值类型类似于函数中的返回值类型,但不同的是后面有in关键字。

Swift提供了多种闭包简化写法,我来介绍下面几种不同形式:

1、类型推断简化

类型推断是Swift的强项,Swift可以根据上下文环境推断出参数类型和返回值类型。以下代码是标准形式的闭包:

{(a:Int,b:Int) -> Intin

return a + b

}

Swift能推断出参数abInt类型,返回值也是Int类型。简化形式如下:

{(a,b) in return a + b }

{a,b in return a + b } //参数列表括号也可以省略

2、隐藏return关键字

在闭包内部语句组只有一条语句,如return a + b等,那么这种语句都是返回语句。前面的关键字return可以省略,省略形式如下:

{a,b in a + b }

使用这种简化方式修改后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {    var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = {a,b in a + b } //return关键字省略了    default:        result = {a,b in a - b } //return关键字省略了    }    return result}

省略的前提是闭包中只有一条return语句。

3、省略参数名称

Swift提供了参数名省略功能,我们可以用来指定闭包中参数,指代第一个参数,指代第二个参数,指代第三个参数,以此类推$n+1指代第n个参数。使用参数名

省略

参数列表Swift功能,在闭包中必须省略能够推断出这些缩写参数的类型。参数列表省略了,定义,in关键字也需要省略。参数名省略之后如下所示:{ + }

使用参数名省略后的示例代码如下:

func calculate(opr :String)-> (Int,Int)-> Int {     var result : (Int,Int)-> Int        switch (opr) {    case "+" :        result = { + } //采用了参数名省略    default:        result = { - } //采用了参数名省略    }    return result} let f1:(Int,Int)-> Int = calculate("+")print("10 + 5 = \(f1(10,5))") let f2:(Int,Int)-> Int = calculate("-")print("10 - 5 = \(f2(10,5))")

4

、使用闭包返回值

闭包表达本质上是函数类型,是有返回值的,我们可以直接在表达式中使用闭包的返回值。重新修改

add

sub

闭包,示例代码如下:

let c1:Int = {(a:Int,b:Int) -> Int in                 return a + b               }(10,5)    print("10 + 5 = \(c1)") 
解释:给

c1

赋值,后面是一个闭包表达式。但是闭包表达式不能直接赋值给
c1 ,因为

c1Int类型,需要闭包的返回值。这就需要在闭包结尾的大括号后面接一对小括号(10,5),通过小括号(10,5)为闭包传递参数。

欢迎关注关东升新浪微博

@tony_

关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

更多精品iOS

Cocos
、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php

总结

以上是内存溢出为你收集整理的Swift 2.0学习笔记(Day 22)——闭包那些事儿!全部内容,希望文章能够帮你解决Swift 2.0学习笔记(Day 22)——闭包那些事儿!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1083806.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存