Sequence1

本贴最后更新于 2134 天前,其中的信息可能已经事过景迁


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]))
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    34 引用 • 37 回帖 • 495 关注
  • Sequence
    1 引用 • 3 回帖

相关帖子

3 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    为咩不带行标呢?

    1 回复
  • someone756
    作者

    @88250 为什么没有行标呢? 再就是代码是我直接从 Xcode 复制过来的,为什么样式不一样呢?

    1 回复
  • 88250

    是没有行号,先复制到文本编辑器再复制出来试试。

推荐标签 标签

  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 582 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 100 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 489 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 1 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 19 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 429 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖 • 2 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 1 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    185 引用 • 318 回帖 • 352 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 689 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    475 引用 • 899 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 54 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    9 引用 • 83 回帖
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    163 引用 • 1446 回帖
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 498 关注
  • 分享

    有什么新发现就分享给大家吧!

    240 引用 • 1729 回帖
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 125 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    35 引用 • 35 回帖
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 690 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    261 引用 • 662 回帖 • 1 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 434 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    178 引用 • 120 回帖 • 4 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 9 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 674 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 16 关注