返回一个函数vs返回一个闭包

编程之家收集整理的这篇文章主要介绍了返回一个函数vs返回一个闭包编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

搜索热词

Swift中,据我所知,闭包保留了他们的环境,而普通的功能却没有.

考虑下面的f(返回一个函数)和h(返回一个闭包). f()()和h()()都返回3.为什么f()()不会导致运行时错误

func f() -> () -> Int { 
    let a = 3
    func g() -> Int { 
        return a
    } 
    return g 
} 

func h() -> () -> Int {
    let a = 3
    return { () in a }
}

解决方法

你所写的并不完全正确,因为根据 documentation

Global functions are closures that have a name and do not capture any values.

Nested functions are closures that have a name and can capture values from their enclosing function.

Closure expressions are unnamed closures written in a lightweight Syntax that can capture values from their surrounding context.

所以g()会捕获值.

总结

以上是编程之家为你收集整理的返回一个函数vs返回一个闭包全部内容,希望文章能够帮你解决返回一个函数vs返回一个闭包所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群:1065694478(已满)
编程之家官方2群:163560250(已满)
编程之家官方3群:312128206

相关文章

猜你在找的Swift相关文章

Swift 正式开源!Swift 团队很高兴宣布 Swift 开始开源新篇章。自从苹果发布 Swfit 编程语言,就成为了历史上发展最快的编程语言之一。Swift 通过设计使得软件编写更加快速更加安全。 Swift 的 GitHub 地址:https://github.com/apple/swift Swift 是由多种不同的项目组成的,提供一个构建软件的完整生态系统。Swift 编译器项目解析
快,快,快!动动您的小手,分享给更多朋友! 苹果去年推出了全新的编程语言Swift,试图让iOS开发更简单,也承诺开源Swift代码。 昨天,苹果宣布:开源Swift,引起不少轰动,短短一天不到得时间,github上就有9000多star。对于广大开发者来说,真是一大福利!大家快取看看吧,一睹真容! swift开源地址: https://github.com/apple/swift 官方Linux
本文由@Chun发表于Chun Tips :http://chun.tips/blog/2014/12/11/shi-yong-swift-gou-jian-zi-ding-yi-de-activityindicator-view/ 目前在自己的个人项目里,已经开始使用Swift去编写代码。这篇文章把项目中自己设计的一个ActivityIndicator View展示给大家。 在开始之前,我们先看
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过状态管理有多痛苦,有时这是不可避免的。一个状态管理的例子大家都很熟悉,那就是单例。使用Swift时,有许多方法实现单例,这是个麻烦事,因为我们不知道哪个最合适。这里我们来回顾一下单例的历史,看一看在Swift中如何正确地实现单例。 如果你想直接看看S
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过状态管理有多痛苦,有时这是不可避免的。一个状态管理的例子大家都很熟悉,那就是单例。使用Swift时,有许多方法实现单例,这是个麻烦事,因为我们不知道哪个最合适。这里我们来回顾一下单例的历史,看一看在Swift中如何正确地实现单例。 如果你想直接看看S
译者:ray16897188;校对:numbbbbb;定稿:Cee 如果问我在做过的所有项目中做的最多的事情,那处理日期绝对是榜上有名(译注:本文中的「日期」是指代 NSDate 对象,同时包含「日(date)」 和「时(time)」这两个元素)。毋庸置疑,无论工作量是多是少,开发者迟早需要「玩」一下 NSDate 类,去按某种方式处理一下日期。从简单的将一个日期转换成一个字符串到对日期做计算,总
CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿、寻求《近匠》报道,或给文章挑错,欢迎发送邮件至tangxy@csdn.net。 不久之前,苹果宣布Swift正式开源,皆大欢喜。又多了好多好玩的新玩意儿,一时间仿佛提前过圣诞了呢!而其中的Swift包管理器(Swift Package Ma
下面这篇文档收集了一系列编写高性能 Swift 代码的要诀和技巧。文档的目标读者是编译器和标准库开发人员。 文档中的一些技巧可以帮助提升您的 Swift 程序质量,使您的代码不容易出错且可读性更好。显式地标记最终类和类协议是两个显而易见的例子。 然而文档中还有一些技巧是不符合规矩的,扭曲的,仅仅解决一些比编译器或语言的特殊的临时性需求。文档中的很多建议来自于多方面的权衡,例如:运行时、字节大小、代