import Foundation print("Hello, World!") //protocol IteratorProtocol { // associatedtype Element // mutating func next() -> Element? //} struct Ones: IteratorProtocol { typealias Element = Int mutating func next() -> Int? { return 1 } } var ones = Ones() print(ones.next()) print(ones.next()) //struct Fibonacci: IteratorProtocol { // typealias Element = Int // // private var state = (0, 1) // // mutating func next() -> Int? { // let nextNumber = state.0 // state = (state.1, state.0 + state.1) // return nextNumber // } // //} //var fibonacci = Fibonacci() //print(fibonacci.next()) //print(fibonacci.next()) //print(fibonacci.next()) //print(fibonacci.next()) //print(fibonacci.next()) //print(fibonacci.next()) // //var fibonacci1 = fibonacci //print(fibonacci1.next()) //protocol Sequence { // associatedtype Element // associatedtype Iterator: IteratorProtocol where Iterator.Element == Element // // func makeIterator() -> Iterator //} struct FiboIter: IteratorProtocol { typealias Element = Int var state = (0, 1) mutating func next() -> Int? { let nextNumber = state.0 self.state = (state.1, state.0 + state.1) return nextNumber } } struct Fibonacci: Sequence { typealias Element = Int func makeIterator() -> FiboIter { return FiboIter() } } var fibs = Fibonacci() var fib1 = fibs.makeIterator() print(fib1.next()) print(fib1.next()) print(fib1.next()) print(fib1.next()) print(fib1.next()) print(fib1.next()) print(fib1.next()) for n in Fibonacci() { if n <= 5 { print(n) } else { break } } var arrayInt: [Int] = [] var sumInt = arrayInt.reduce(0, +) print(sumInt) var arrStr: [String] = [] var sumStr = arrStr.reduce("", +) print(sumStr) func reduce1(of sequence: S, _ partical: (E, E) -> E) -> E? where S: Sequence, E == S.Element { var iter: S.Iterator = sequence.makeIterator() guard var accumulated = iter.next() else { return nil } while let element = iter.next() { accumulated = partical(accumulated, element) } return accumulated } extension Sequence { //FixedWidthInteger, SignedInteger , 先就这么着吧,:slightly_smiling: func reduceFromZero(of sequence: S, _ partical: (E, E) -> E) -> E where S: Sequence, E: FixedWidthInteger, E: SignedInteger, E == S.Element { var iter = sequence.makeIterator() guard var accumulated = iter.next() else { return 0 } while let element = iter.next() { accumulated = partical(accumulated, element) } return accumulated } } print(reduce1(of: arrayInt, +)) print([1].elementsEqual([1]))
近期热议
推荐标签 标签
-
JVM
180 引用 • 120 回帖 • 5 关注
JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。
-
Ubuntu
127 引用 • 169 回帖
Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。
-
SpaceVim
3 引用 • 31 回帖 • 111 关注
SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
即用的 Vim-IDE。 -
链滴
180 引用 • 3879 回帖
链滴是一个记录生活的地方。
记录生活,连接点滴
-
flomo
6 引用 • 143 回帖 • 1 关注
flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。
-
SendCloud
2 引用 • 8 回帖 • 507 关注
SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。
-
Solidity
3 引用 • 18 回帖 • 441 关注
Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。
-
国际化
8 引用 • 26 回帖
i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。
-
Unity
25 引用 • 7 回帖 • 122 关注
Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
-
RabbitMQ
49 引用 • 60 回帖 • 350 关注
RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
-
H2
11 引用 • 54 回帖 • 671 关注
H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。
-
Gitea
5 引用 • 16 回帖
Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。
-
房星科技
6 引用 • 141 回帖 • 605 关注
房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。
-
Rust
59 引用 • 22 回帖 • 8 关注
Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。
-
小说
32 引用 • 108 回帖 • 4 关注
小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。
-
阿里巴巴
43 引用 • 221 回帖 • 56 关注
阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。
-
abitmean
• 34 关注
有点意思就行了
-
V2EX
16 引用 • 236 回帖 • 243 关注
V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。
-
正则表达式
31 引用 • 94 回帖 • 1 关注
正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。
-
京东
14 引用 • 102 回帖 • 311 关注
京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。
-
心情
59 引用 • 369 回帖
心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。
-
思源笔记
26149 引用 • 108621 回帖 • 1 关注
思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。
融合块、大纲和双向链接,重构你的思维。
-
快应用
15 引用 • 127 回帖 • 3 关注
快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。
-
RYMCU
4 引用 • 6 回帖 • 61 关注
RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。
-
单点登录
9 引用 • 25 回帖 • 2 关注
单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
-
脑图
32 引用 • 99 回帖 • 1 关注
脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。
-
Ant-Design
17 引用 • 23 回帖 • 2 关注
Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于