在 Swift 中一次迭代两个集合

2024-04-02

假设我有一个数组[1, 2, 3, 4, 5]。我怎样才能一次迭代两个?

Iteration 1: (1, 2)
Iteration 2: (3, 4)
Iteration 3: (5, nil)

您可以使用名为 stride(to:, by:) 的渐进循环来每隔 n 个元素迭代元素:

let array = Array(1...5)

let pairs = stride(from: 0, to: array.endIndex, by: 2).map {
    (array[$0], $0 < array.index(before: array.endIndex) ? array[$0.advanced(by: 1)] : nil)
}   // [(.0 1, {some 2}), (.0 3, {some 4}), (.0 5, nil)]

print(pairs)  // "[(1, Optional(2)), (3, Optional(4)), (5, nil)]\n"

要迭代集合子序列而不是元组:

extension Collection {
    func unfoldSubSequences(limitedTo maxLength: Int) -> UnfoldSequence<SubSequence,Index> {
        sequence(state: startIndex) { start in
            guard start < self.endIndex else { return nil }
            let end = self.index(start, offsetBy: maxLength, limitedBy: self.endIndex) ?? self.endIndex
            defer { start = end }
            return self[start..<end]
        }
    }
}

let array = Array(1...5)
for subsequence in array.unfoldSubSequences(limitedTo: 2) {
    print(subsequence)  // [1, 2] [3, 4] [5]
}

这适用于任何类型的集合:

let string = "12345"
for substring in string.unfoldSubSequences(limitedTo: 2) {
    print(substring)  // "12" "34" "5"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Swift 中一次迭代两个集合 的相关文章

  • 删除派生数据文件夹后,Xcode 不断重新创建派生数据文件夹

    自动完成功能在 Xcode 6 中不再起作用 我四处搜索 发现删除派生数据文件夹可以解决此问题 每次我删除它时 它都会回来 然后就不会再自动完成了 有什么建议么 Thanks 没关系 我解决了这个问题 我没有声明需要在类内的方法中使用的变量
  • 如何向 UIView 添加大小调整手柄?

    我试图根据用户请求在运行时动态创建视图 UIImageView 和 UITextView 然后允许用户移动它们并调整它们的大小 除了调整大小之外 我的一切都工作得很好 我尝试使用捏合手势识别器 但发现它对于我想要的东西来说太笨拙了 因此 我
  • 如何右对齐 UILabel?

    Remark 实施 myLabel textAlignment right does not解决了我的问题 这不是我所要求的 我想要实现的是让标签对齐右对齐 为了更清楚地说明 这就是如何left对齐外观 就是这样justify对齐外观 if
  • Swift 3 中的 JSON 解析

    有没有人能够找到一种在 Swift 3 中解析 JSON 文件的方法 我已经能够返回数据 但在将数据分解为特定字段时我没有成功 我会发布示例代码 但我已经尝试了很多不同的方法但没有成功 并且没有保存任何代码 我想要解析的基本格式是这样的 提
  • Swift 中的柯里函数

    我想创建一个返回柯里函数的函数 如下所示 func addTwoNumbers a Int b Int gt Int return a b addTwoNumbers 4 b 6 Result 10 var add4 addTwoNumbe
  • Xcode 10 Beta 5 — clang:错误:链接器命令失败,退出代码为 1

    有人可以帮我吗 我的项目一切正常 但更新到 Xcode10 Beta5 后 尝试在 iPhone 上运行该应用程序时出现此错误 然而模拟器可以工作 请帮助我 我已经对这个问题进行了网络搜索并发现this https stackoverflo
  • 所需框架与静态库

    构建现代框架 https developer apple com videos play wwdc2014 416 says 每个应用程序都有自己的自定义框架副本 https stackoverflow com a 15262463 242
  • 为什么这个谓词格式会变成 '= nil'

    有人建议这个线程 https stackoverflow com questions 40686005 nspredicate crash after swift 3 migration与我的问题完全相同 但是 我的应用程序没有崩溃 并且我
  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C
  • 在视图控制器之间传递数据使用从嵌入导航控制器的视图到 tabbarcontroller 的 Segue

    我有两个视图 我想将数据从一个视图传递到下一个视图 第一个视图是我想要传递给下一个视图的数据的地方 我们称之为SourceViewController 然而SourceViewController嵌入在一个NavigationViewCon
  • CGPoint 标量乘法 Swift

    我正在 SpriteKit 中构建一个平台游戏 并将为我的实体实现更新功能 以便它们根据重力和速度移动 但是 我需要使添加的速度量与增量时间成比例 以防止帧速率影响我的实体的移动方式 因此我将导入 GLKit 以便我可以使用标量函数 但是
  • 在 swrevealcontroller 之前实现登录屏幕

    我刚刚开始学习 IOS 开发 我已经按照给定的在线教程成功实现了 SWRevealViewController 一切都按预期工作 然后 我决定添加一个登录屏幕 这将是应用程序运行时用户看到的第一个页面 我采取的步骤如下 将 UIViewCo
  • Swift 3 中是否提供内置内部函数?

    我可以在 Xcode 自动完成弹出窗口中看到各种内置函数 如 builtin popount builtin clz 等 我不确定这些是从哪里获取的 单击命令不会导致快速定义或任何文档 Swift 3 中是否有 builtin 或等效的内部
  • iOS 11 安全区域布局指南向后兼容性

    启用安全区域布局指南是否与 iOS 11 以下版本兼容 我设法使用新的安全区域布局指南并保持与 iOS 9 和 iOS 10 的向后兼容性 编辑 正如 NickEntin 的评论所指出的 此实现将假定存在状态栏 但在 iPhone X 的横
  • Transit MKDirectionsRequest 产生 null 错误 Error Domain=MKErrorDomain Code=5 "(null)"

    我正在尝试使用 MapKit Directions Request 来获取两个坐标之间的交通方向 当我切换到其他 非 Transit 类型时 下面的代码可以工作 但是当我切换到 Transit 时 它会抛出一个错误 该错误在 Apple 文
  • 在另一种语言中使用 dateFormatter [重复]

    这个问题在这里已经有答案了 我正在运行一段返回的代码nil在具有不同语言设置的 iPhone 上运行时 代码示例如下所示 let dateFormatter DateFormatter dateFormatter dateFormat MM
  • iOS UIButton 带有圆角和背景 bug

    我发现圆形 UIButton 存在一个奇怪的问题 这是我创建此按钮的代码块 let roundedButton UIButton type System roundedButton frame CGRectMake 100 100 100
  • 如何使用 Swift 获取 YouTube 频道的所有播放列表?

    我的问题不是关于从一般频道检索视频 我只想获取该频道创建的所有 播放列表 并检索每个播放列表的缩略图 标题和视频数量 这是一个 YouTube 频道示例 正如您所看到的 有很多已创建的播放列表 截至目前 我只能获取某个频道最新上传的视频 在
  • 无法转换“UINavigationController”类型的值

    我正在为我的应用程序实现一个搜索界面 因此基本上我会将搜索关键字从一个 ViewController 传递到另一个 ViewController 我已经多次进行过这种类型的参数传递 但这次似乎有些奇怪 目标 ViewController 嵌
  • xcode 6.1 (Swift) 中的 SIGABRT 运行时错误

    与最初的代码相比 唯一的更改是在ViewControl swift override func viewDidLoad newMessage hidden true super viewDidLoad Do any additional s

随机推荐

  • Chart.js 将标签变成链接

    我不确定如果不做以下事情是否可能 在 HTML 画布中创建链接 https stackoverflow com questions 6215841 create links in html canvas但让我们确定一下 有没有一种方法 相对
  • 计算 python 中第二个列表中列表项的出现次数

    a list 1 2 3 4 5 6 7 8 9 0 b list 1 3 6 9 如何计算列表be中的某个项目在列表a中出现的次数 上面的示例应返回值 4 在写这个问题时 我想到了以下内容 似乎有效 a list 1 2 3 4 5 6
  • C++ 容器的一般用例

    的一般用例是什么C 标准库容器 http www cplusplus com reference stl bitset deque list map multimap multiset 优先队列 queue set stack vector
  • Linq 在 C# 中比较两个集合

    我想比较我当前正在使用嵌套 for 循环执行的 C 中的两个集合 Linq 中是否有一种方法可以更快 更高效地执行相同操作 这是我当前的代码 它可以完美地工作 只是在寻找一种有效的方法 OrgCollection myYears Org R
  • 足球(足球)场线的单应性

    我正在研究使用足球比赛的视频 并尝试使用单应性将帧映射到球场的俯视图 我已经开始使用霍夫线以及线段检测器找到帧中的所有白线 其中线段检测器似乎工作得稍微好一些 请参阅下面我的代码和示例 import cv2 import numpy as
  • Scala 中的 shouldBe 和 shouldEqual 有什么区别?

    我什么时候应该使用shouldBe 什么时候应该使用shouldEqual port shouldEqual 8000 port shouldBe 8000 From http www scalatest org user guide us
  • 设置 ng-htmljs-preprocessor karma 预处理器

    我正在设置 Karma 配置文件 但我不完全理解存在的一些选项 因为我没有成功测试已通过 ngHtml2JsPreprocessor 运行并已 templateCached 在 ngHtml2JsPreprocessor 内部 我可以添加一
  • 无法从 Git post-receive hook 检测分支

    我在远程存储库上设置了一个后接收挂钩 它尝试确定传入推送的分支名称 如下所示 branch git rev parse abbrev ref HEAD 不过 我发现无论我从 branch 变量推送哪个分支 都会设置为 master 有任何想
  • 如何在 Visual Studio 2017 中将 npm 包与 ASP.NET CORE 2 一起使用?

    我在 Visual Studio 2017 中向我的 ASP NET Core 2 项目添加了一些 npm 包 现在我想使用这些包中的 css 和 js 文件 但 VS 看不到它们 因为 node modules 文件夹位于 wwwroot
  • 正则表达式:重复组仅获取最后一组

    My data stack 123 overflow 456 others st 7 ov 7 againothers m 11 t 12 m 13 t 14 m 15 t 16 st 8 ov 8 againothers m 17 t 1
  • Svg 在设备中不可见,但在 android xml 中可见

    我对这些图标使用了 SVG 这些图标在 xml 中可见 但在 device 中不可见 以下是我的代码
  • png8和png24有什么区别

    我想了解 png 文件的用途 有两种格式可供选择PNG 图像 一个是png8另一个是png24 我想知道如果我在我的html页面会出现错误吗 或者这只是质量问题 只有一种PNG格式 但支持5种颜色类型 http en wikipedia o
  • Android Kotlin 中的片段类型不匹配

    我将一步步尝试在 Kotlin Android 中创建一个简单的选项卡布局 我对我发现的很多教程感到非常沮丧 因为它们要么 1 有效 但设计过度 很难看出发生了什么 要么 2 似乎不起作用 这是情况 2 中的一种 非常接近工作 但有一些问题
  • 使用 hibernate @Formula 获取集合

    我有类似的数据库结构 唯一的区别是我在从 A 到 C 实体的路径上有更多表 我对该结构有以下映射 Entity Table name a class A Id private int id private String title Elem
  • scikit-learn:如何计算百分比均方根误差(RMSE)?

    我有一个数据集 在此链接中找到 https drive google com open id 0B2Iv8dfU4fTUY2ltNGVkMG05V00 https drive google com open id 0B2Iv8dfU4fTU
  • Erlang:NIF 和透析器警告

    在实施 NIF 时 Dialyzer 给了我 函数 crc16 1 没有本地返回 可能是因为我这样做exit在 erl 模块中 如官方文档推荐 module my nifs export crc16 1 on load init 0 ini
  • 如何在 Xcode 4 项目导航器的工作区中隐藏资源分支和其他特殊文件?

    我注意到资源分叉 filename 和其他隐藏文件 例如 DS Store在处理 工作区 项目 Ruby 时 会显示在项目导航器中 如何配置 Xcode 4 使其不在项目导航器中显示这些文件 None
  • 之间有什么区别?

    我应该什么时候使用
  • NodeJS 环境变量未定义

    我正在尝试创建一些环境变量 但是当我创建文件并运行服务器时 它们似乎未定义 我在用着nodemon 我已经重新启动了我的服务器 但没有运气 UPDATED env MONGO ATLAS PW xxxx JWT KEY secret thi
  • 在 Swift 中一次迭代两个集合

    假设我有一个数组 1 2 3 4 5 我怎样才能一次迭代两个 Iteration 1 1 2 Iteration 2 3 4 Iteration 3 5 nil 您可以使用名为 stride to by 的渐进循环来每隔 n 个元素迭代元素