Error[8]: Undefined offset: 18, 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中,函数也可以作为一种类型: 比如如下test函数,它的入参opera的类型就是是一个入参是两个Double,出参是一个Double的函数 func test(opera: (Double,Double)->Double){ opera(1.0,1.0) } func paramFun(op1:Double,op2:Double) -> { return op1*op2}

在Swift中,函数也可以作为一种类型:
比如如下test函数,它的入参opera的类型就是是一个入参是两个Double,出参是一个Double的函数

func test(opera: (Double,Double)->Double){ opera(1.0,1.0) } func paramFun(op1:Double,op2:Double) -> {     return op1*op2}test(paramFun)

我们可以改进一下上面的写法:
不需要单独在外面写paramFun()的定义
直接用匿名函数的方式把函数作为参数传递给test函数

func test(opera: (Double,1.0) } test( func paramFun(op1:Double,op2:Double) -> { return op1*op2 } )

再改进一点,我们根本就不需要知道它的函数名paramFun
把函数名字去掉,并且把 ‘{‘括号提前 改写成如下:

func test(opera: (Double,1.0) } test( { (op1:Double,op2:Double) -> Double in return op1*op2 } )

这就是一种闭包方式的写法

再改进一点
因为test函数的定义是test(opera:(Double,Double)->Double)所以它知道它的参数 (op1:Double,op2:Double)->Double 其中op1 和 op2一定是Double类型的,并且返回类型也是Double的。
所以我们可以进一步简化为如下结果

test(      {        (op1,op2) in        op1*op2    })

再进一步简化。swift不强制要求你写函数参数
所以可以更进一步简化为:

test(      {        *[+++]    })

我们可以看到最终的结果非常的简洁。

总结

以上是内存溢出为你收集整理的Swift闭包全部内容,希望文章能够帮你解决Swift闭包所遇到的程序开发问题。

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

)
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闭包_app_内存溢出

Swift闭包

Swift闭包,第1张

概述在Swift中,函数也可以作为一种类型: 比如如下test函数,它的入参opera的类型就是是一个入参是两个Double,出参是一个Double的函数 func test(opera: (Double,Double)->Double){ opera(1.0,1.0) } func paramFun(op1:Double,op2:Double) -> { return op1*op2}

在Swift中,函数也可以作为一种类型:
比如如下test函数,它的入参opera的类型就是是一个入参是两个Double,出参是一个Double的函数

func test(opera: (Double,Double)->Double){ opera(1.0,1.0) } func paramFun(op1:Double,op2:Double) -> {     return op1*op2}test(paramFun)

我们可以改进一下上面的写法:
不需要单独在外面写paramFun()的定义
直接用匿名函数的方式把函数作为参数传递给test函数

func test(opera: (Double,1.0) } test( func paramFun(op1:Double,op2:Double) -> { return op1*op2 } )

再改进一点,我们根本就不需要知道它的函数名paramFun
把函数名字去掉,并且把 ‘{‘括号提前 改写成如下:

func test(opera: (Double,1.0) } test( { (op1:Double,op2:Double) -> Double in return op1*op2 } )

这就是一种闭包方式的写法

再改进一点
因为test函数的定义是test(opera:(Double,Double)->Double)所以它知道它的参数 (op1:Double,op2:Double)->Double 其中op1 和 op2一定是Double类型的,并且返回类型也是Double的。
所以我们可以进一步简化为如下结果

test(      {        (op1,op2) in        op1*op2    })

再进一步简化。swift不强制要求你写函数参数
所以可以更进一步简化为:

test(      {        *    })

我们可以看到最终的结果非常的简洁。

总结

以上是内存溢出为你收集整理的Swift闭包全部内容,希望文章能够帮你解决Swift闭包所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存