Swift 相当于 Ruby 的“each_cons”

2024-03-14

Ruby

红宝石有每个缺点 https://ruby-doc.org/core-2.1.0/Enumerable.html#method-i-each_cons可以像这样使用

class Pair
    def initialize(left, right)
        @left = left
        @right = right
    end
end
votes = ["a", "b", "c", "d"]
pairs = votes.each_cons(2).map { |vote| Pair.new(*vote) }
p pairs
# [#<Pair @left="a", @right="b">, #<Pair @left="b", @right="c">, #<Pair @left="c", @right="d">]

Swift

Swift 中的相同代码,但没有each_cons功能

struct Pair {
    let left: String
    let right: String
}
let votes = ["a", "b", "c", "d"]
var pairs = [Pair]()
for i in 1..<votes.count {
    let left = votes[i-1]
    let right = votes[i]
    pairs.append(Pair(left: left, right: right))
}
print(pairs)
// [Pair(left: "a", right: "b"), Pair(left: "b", right: "c"), Pair(left: "c", right: "d")]

如何使这段快速代码变得更短或更简单?


zip(votes, votes.dropFirst())

这会产生一个元组序列。

Example

struct Pair {
    let left: String
    let right: String
}
let votes = ["a", "b", "c", "d"]
let pairs = zip(votes, votes.dropFirst()).map {
    Pair(left: $0, right: $1)
}
print(pairs)
// [Pair(left: "a", right: "b"), Pair(left: "b", right: "c"), Pair(left: "c", right: "d")]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 相当于 Ruby 的“each_cons” 的相关文章

随机推荐

  • GtKGLArea 无法创建 OpenGL 2.1 上下文

    我目前正在为我的游戏引擎项目开发一个简单的编辑器 虽然该项目似乎在我的主工作站 支持 OpenGL 3 3 的 GTX 650Ti 上运行得很好 但当我在我的设备上测试它时 它似乎被破坏了 测试桌面 GMA4500 最大支持 OpenGL
  • 无法让 GLFW 链接

    我正在尝试编译以下测试程序 include
  • jquery 使用变量中的名称按类选择元素

    我想在 jQuery 中对与某个类名匹配的所有元素执行一些操作 类名来自变量 如何使用我的变量按类进行选择 var x this attr href slice 1 这将设置x等于的名称class I want 现在我想选择具有该类名的所有
  • Sublime Text 3 中的 React.js 文件语法

    我使用 Sublime Text 3 作为我的代码编辑器 我在 React 中编写了一个基本的 hello world 示例 但是代码上的着色不正确 我尝试安装 Babel 插件 但即使在那之后 着色似乎也不起作用 如下图所示 仅仅安装它是
  • 扩展“Prettier - Code Formatter”无法格式化 - (Mac v8.0)

    Prettier 遇到无法格式化的问题 我选择了保存格式 默认格式设置为使用 Prettier 昨天工作正常 现在保存时或运行格式文档命令时没有格式化 没有更改任何设置 我确实尝试卸载并重新安装 Prettier 强制格式化文档也会返回错误
  • 如何在通用 Windows 应用程序中使用 System.Net.Http.HttpClient 忽略自签名证书

    我正在创建一个可移植类库 这意味着据我所知 我必须使用 System Net Http HttpClient 来调用我的 Web API 挑战在于 对于我的通用 Windows 应用程序 我无法弄清楚如何忽略由于 API 服务器可以拥有自签
  • Swift 中的二进制到十六进制

    我有一个二进制字符串 例如 00100100 我想要十六进制字符串 例如 24 Swift 中是否有一种将二进制转换为十六进制的方法 一个可能的解决方案 func binToHex bin String gt String binary t
  • 打印 java scriptlet 变量,就好像它是 JavaScript 变量一样

    你好 我需要在jsp内的标签内的javascript调用内输出一个java变量 例如
  • 启动时依赖 CLR 的程序集解析

    当程序启动时 CLR 是否尝试解析 不一定加载 所有依赖程序集 也就是说 依赖的大会决议是按需完成的吗 请注意 我不是在谈论 Assembly Load Reflective 类型的负载 JIT 编译器负责指导程序集的加载 以响应将 IL
  • 如何在 Blazor 中订阅 onscroll 事件?

    我试图对 Blazor 中的 onscroll 事件做出反应 以便在用户向下滚动网页时为图像设置动画 类似于此网站上的品牌徽标 https lebenswelten stgabriel at https lebenswelten stgab
  • 拖动按钮时 ScrollView 不滚动

    我有一个滚动视图 当它上面没有按钮时 它会滚动 现在确实如此 当拖动鼠标 在模拟器上 时 什么也没有发生 我认为是因为按钮被按下 我怎样才能做到这一点 发生这种情况是因为UIButton的子视图UIScrollView 我假设按钮在您的情况
  • 如何将原始 SQL 查询放入 Sequel 中

    我正在尝试将 SQL 代码转换为 Seqel 以从我的脚本运行它 我如何转换这个 select code count 1 as total from school districts group by code order by total
  • 从 SQL Server 中的 XML 选择空值

    我正在尝试从具有 null 作为属性之一的 XML 中进行选择 它没有返回 null 而是返回 0 我做错了什么 请参阅下面的代码进行复制 declare a xml select a
  • 将变量传递给jsp

    我有一个java类 public void doView RenderRequest renderRequest RenderResponse renderResponse throws IOException PortletExcepti
  • 使用 RxJava 进行电子邮件登录验证,可观察对象发出两次

    我正在制作一个简单的登录表单 电子邮件和密码 来尝试增强我的反应式编程技能 我在让电子邮件字段验证按照我想要的方式工作时遇到一些问题 这是我的代码 final Observable
  • 如何在 Linux 中获取文件创建日期?

    我正在处理一批文件 这些文件包含同一对象在其生命周期不同时间的信息 对它们进行排序的唯一方法是按创建日期 我正在使用这个 char buffer has the name of file struct stat buf FILE tf tf
  • select2 将类添加到所选选项

    我想添加类option在 select2 中 所以在我单击建议列表项后 它将添加自定义类添加到选择多个到主要的选择结构 这是示例代码
  • Go/Golang sql.DB 在函数中的重用

    sql Open 返回 sql DB 类型的变量 我有一个函数可以调用其他 10 个函数 这些函数都需要进行数据库调用 是否更正确 更有效 将 sql DB 指针发送到每个函数 或者 在每个函数中创建一个新的 sql DB 对象 Meani
  • 是否可以捕获 Ctrl+C 信号 (SIGINT) 并以“延迟”方式运行清理函数?

    I want to capture the Ctrl C SIGINT signal sent from the console and print out some partial run totals You can use the o
  • Swift 相当于 Ruby 的“each_cons”

    Ruby 红宝石有每个缺点 https ruby doc org core 2 1 0 Enumerable html method i each cons可以像这样使用 class Pair def initialize left rig