Swift for 循环中的模式匹配

2023-12-05

似乎应该有一种“更快速”的方法来做到这一点 - 但我仍然在思考在 Swift 中进行模式匹配的各种方法。

假设我有一个 AnyObject 数组,我想循环遍历它,如果该项目是 Int 并且 Int 是 5 的倍数,那么我想将其打印出来。这是我最初的有效方法:

let myStuff: [AnyObject] = [5, "dog", 11, 15, "cat"]

for item in myStuff {
    if let myInt = item as? Int where myInt % 5 == 0 {
        print ("\(item)")
    }
}

老实说,这还不错……但是有了 Swift 的所有模式匹配语法,我似乎应该能够将逻辑合并到 1 行。到目前为止,我还没有找到一种有效的方法 - 但我期望能够做类似的事情:

//This doesn't work, but I feel like something similar to this should
for item in myStuff where item is Int, item % 5 == 0 {
    print ("\(item)")
}

显然,这不是什么大不了的事——但对我来说,这更像是一次思考练习,可以更好地理解 Swift 的模式匹配。


您可以组合一个模式匹配条件转换 with a where像这样的子句:

let myStuff: [AnyObject] = [5, "dog", 11, 15, "cat"]

// item will be an Int, and divisible by 5
for case let item as Int in myStuff where item % 5 == 0 {
    print(item)
}

// Prints:
// 5
// 15
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift for 循环中的模式匹配 的相关文章

随机推荐

  • 尝试创建多个 JLabel,但只出现一个

    我正在尝试创建多个相同形式的 JLabel 然后尝试将它们添加到同一个 JPanel 中 然而 只出现了一个 JLabels 我不明白为什么 这是我写的代码 final JPanel labelPanel new JPanel new Bo
  • API 响应显示带有 PUT/PATCH 请求的过时数据

    我正在使用 Django REST 框架开发 API 就我而言 我使用嵌套序列化器 所以我需要覆盖 update method 这是所需的描述 序列化器 配置串行器 class DeviceConfigSerializer serializ
  • 在 Linux 中的 jvm 中查找硬和软打开文件限制(ulimit -n 和 ulimit -Hn)

    我有一个问题 我需要从 java groovy 程序中找出 Linux 中进程的硬打开和软打开文件限制 当我从终端执行 ulimit 时 它会给出硬打开文件限制和软打开文件限制的单独值 ulimit n 1024 ulimit Hn 409
  • Firebase 云消息传递:FCM 令牌过期

    据我所知 如果发生以下情况之一 FCM 令牌会自行更新 应用程序删除实例ID 该应用程序已在新设备上恢复 用户卸载 重新安装应用程序 用户清除应用程序数据 App端可以使用以下方法来监控Token更新 监控代币生成 每当生成新令牌时都会触发
  • 有没有什么不显眼的方法来挂钩 jQuery 方法的触发器?

    我想知道是否有任何不显眼的方法来挂钩 attr data css 等方法并调用自定义触发器 理想情况下 我可以做这样的事情 friend a bind attr changed changed data function e alert T
  • Android:图像按钮或按钮在按下时突出显示效果

    当我按下这些时left and right arrow button当时我想在按钮上看到这些类型的效果 同样的事情发生在Iphone IOS默认情况下 我可以做出这种效果吗 在这里我提到了我想要的图片 在这里我使用了这个 xml 文件但没有
  • 加载 Google LineChart 动画

    我正在尝试通过添加行和刷新图表来使用过渡动画来实现图表的加载动画 但它的表现与我的预期完全不同 这是小提琴http jsfiddle net jATUX 一些代码 google load visualization 1 packages c
  • 连接/组合 MX1 numpy 数组与 MXN numpy 数组

    required time stamps包含 5911 个时间戳 time based mfcc feature包含 5911 个样本 每个样本具有 20 个 mfcc 特征 所以如果你要看看time based mfcc feature它
  • Mysql 存储过程中循环内的 Select 语句

    我们可以在 Mysql 存储过程的循环中使用 Select 语句吗 为什么代码错误 create procedure AbsentReportproc INOUT fromdate DATETIME INOUT todate DATETIM
  • 如何阻止仅针对 favicon 的 HTTP 请求? [复制]

    这个问题在这里已经有答案了 每个人都知道如何在 HTML 中设置 favicon ico 链接 但愚蠢的是 我们只需要一个几个字节的小图标另一个可能影响速度的 HTTP 请求 所以我想知道 如何使该图标成为可用精灵的一部分 例如 backg
  • MVC4中基于模型值的控件创建

    在我的数据库中 我有一个名为 control id 的列 其中包含 1 2 3 4 等值 基于这个值 我必须生成文本框 下拉列表和复选框等控件 例如 如果我的 control id 为 1 则必须生成文本框 如果为 2 则必须生成下拉列表等
  • 有没有一种简单的方法可以按值删除列表元素?

    我想从列表中删除一个值 如果它存在于列表中 也可能不存在 a 1 2 3 4 b a index 6 del a b print a 上面给出了错误 ValueError list index x x not in list 所以我必须这样
  • 从 SOAP 安全标头获取 X 509 证书

    大家好 我有一个用于 cxf Web 服务 spring 应用程序 的简单存根客户端 它使用 WSS4JOutInterceptor 与action Signature 因此 soap 请求消息是 标头 Content Type text
  • AttributeError:“NoneType”对象没有属性“grid_remove”

    我只用 Tkinter 做了一点工作 我喜欢使用它 但与任何类型编程一样 它需要时间来学习 我正在尝试创建一个简单的待办事项列表 最终将保存在文件中 但我无法删除第 17 行中的按钮并将下一行的按钮替换到不同的位置 from tkinter
  • 在特定列中使用范围查找方法

    我已经对此进行了一段时间的修改 我有下面的代码可以工作 但它的搜索量超出了我的预期 我希望它只搜索 C 列而不是整个工作表 我尝试过改变Cells Find to Range C1 C10000 Find但它不返回任何匹配项 真的被这个难住
  • 如何使用 ksoap 2 对 Web 服务调用强制执行超时?

    我需要向使用 ksoap 2 连接到 Web 服务的 J2ME 应用程序添加超时 我已经尝试过描述为可能的伪超时的方法http ksoap2 sourceforge net doc api org ksoap2 transport Http
  • 从子窗体访问父窗体上的控件

    我想从子表单更改父表单文本框中的文本 我设置了文本框 修饰符 公共 我在父窗体中额外编写了一个函数 public TextBox txtbox get return mybox set mybox value 以儿童形式书写 this Pa
  • InvalidArgumentError:输入必须是向量,形状为:[]

    我正在尝试使用保存文本数据的嵌入universal sentence encoder在 pandas dataframe 新列中但出现错误 这就是我正在尝试做的事情 module url https tfhub dev google uni
  • 为什么我的 Android 转换忽略 TransitionListener?

    我正在尝试通过调用来平滑更新显示TransitionManager beginDelayedTransition viewGroup new AutoTransition 在更新显示之前 但我发现有时我快速更新显示 Android 会变得混
  • Swift for 循环中的模式匹配

    似乎应该有一种 更快速 的方法来做到这一点 但我仍然在思考在 Swift 中进行模式匹配的各种方法 假设我有一个 AnyObject 数组 我想循环遍历它 如果该项目是 Int 并且 Int 是 5 的倍数 那么我想将其打印出来 这是我最初