如何在 for 循环中安全地从数组中删除项目?

2024-04-23

完全透露,这是一个家庭作业问题:

它应该有一个 [Circle] 类型的私有属性。一系列圆圈。 该方法应删除半径大于的任何圆 最小要求,并且小于最大要求。

看来我应该使用removeAtIndex()删除不满足循环中确定的条件的数组项。然而,许多人之前已经指出了删除循环中的项目的危险,因为我猜是“迭代器/索引不匹配”。

最终我最终创建了一个空数组并使用.append()将满足“良好”条件的值推至filteredCircles数组,但我忍不住觉得这不符合作业的标准。

是否有一种解决方案实际上可以在循环中从数组中删除项目?


If the FOR LOOP is not强制性的(我在引用的文本中没有看到这个要求)你应该使用filter method.

当你调用filter在数组上你会得到新数组仅包含尊重您传递给的闭包的值filter. 原始数组没有发生变化。

struct Circle {
    let radius: Double
}

let circles = [Circle(radius: 1), Circle(radius: 5.1), Circle(radius: 4), Circle(radius: 10.8)]

let bigCircles = circles.filter { $0.radius > 5 }

为什么这种方法比在 FOR 循环中改变数组更好

  1. Since circles是一个常数,你不会遇到与多线程编程. If circles是可变的,那么当你循环它时其他线程可能会改变它,并产生非常可怕的副作用。
  2. It's 不易出错。您不是在写 CPU 应该做什么,而是在描述结果应该如何。这样你和编译器之间潜在的误解就会减少:)
  3. 你正在写更少的代码这确实意味着更少的潜在错误。

这些是编写函数式编程代码的一些好处。

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

如何在 for 循环中安全地从数组中删除项目? 的相关文章

  • 在 Swift 中使用 commitEditingStyle 动态删除 UITable 部分

    我正在处理一个无法解决的问题 我有一个来自客户数据库数组的名称表 每个客户在其他数据成员中都有一个名称属性 我可以成功删除某个部分中的行 但我不能删除该部分 当该部分中的最后一行被删除时 该部分必须消失 I got NSInternalIn
  • 在SwiftUI中,如何高性能地绘制阴影?

    我用 shadow color radius x y 在我的应用程序中绘制阴影 这是我所知道的在 SwiftUI 中绘制应用程序的唯一方法 我用 sheet isPresented content 方法弹出一个视图 其中包含很多阴影 当我调
  • For...VBA 中的下一个循环超出限制

    我正在使用一个For Next循环填充数组 如下所示 ReDim array 1 to 100 1 to 100 For i 1 to 100 Next i But the i计数器似乎总是转到 101 而不是停止在 100 因此 这会在我
  • iOS 11 浮动 TableView 标题

    有一个应用程序包含多个部分 展开 时每个部分有几行 折叠 时没有 每个部分都有一个部分标题 使用以下子类重用它们UITableViewHeaderFooterView等等 到目前为止一切顺利 然后在 iOS 11 中 我使用了可视化调试器
  • 如何使用 Retrofit 解析嵌套 json....?

    我不知道该怎么办使用 Retrofit 解析 json 熟悉使用 Retrofit 解析简单的 json 但不熟悉解析嵌套Json using Retrofit 这是我的 Json 数据 current observation image
  • Python 3在for循环中更改字典键的值不起作用

    我的 python 3 代码没有按预期工作 def addFunc x y print x y def subABC x y z print x y z def doublePower base exp print 2 base exp d
  • let/var 如何解决可变性? [复制]

    这个问题在这里已经有答案了 我没有任何问题 我只是想对有关可变性的问题进行一些澄清 在 Objective C 中我们会使用例如NSMutableArray得到一个可变数组和NSArray得到一个不可变的 我对两者的内部运作了解不多 但据我
  • 二维数组的 MPI 数据类型

    我需要将一个整数数组的数组 基本上是一个二维数组 从根传递给所有处理器 我在 C 程序中使用 MPI 如何声明二维数组的 MPI 数据类型以及如何发送消息 我应该使用广播还是分散 你需要使用播送 http www netlib org ut
  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al
  • 有没有办法在不使用 foreach 或其他函数的情况下在 PHP 中内爆关联数组的键和值?

    我有一个像这样的关联数组 myarray array a gt 1 b gt 2 c gt 3 我想显示数组键和值 如下所示 a is 1 b is 2 c is 3 我不想使用 print r 或 var dump 来执行此操作 我也不想
  • Angular 4 显示其中的数据

    我不喜欢从 API 返回到我的 Angular 4 应用程序的数据 这是 JSON 的示例 我不关心美元 但这是我正在处理的数据类型 最终目标是在页面上展示 Coin Price BTC 4 281 28 ETH 294 62 etc JS
  • 如何从一维数组和静态字符串创建对象

    我想要一个像 var obj ABC name true dob true CDE name true dob true EFG name true dob true CBA name true dob true XYZ name true
  • 带约束的嵌套集合视图的意外行为 (Swift 4)

    我的表格视图中有一个单元格 其中包含水平分页集合视图 该集合视图的每个页面内都有一个垂直集合视图 为了避免 滚动滚动 问题 我在垂直集合视图中禁用了垂直滚动 垂直集合视图的单元格计数不是静态的 可以是任意数字 因此 这会产生一个问题 集合视
  • 对象数组的数组(二维数组)JNI

    我正在努力创建自定义对象类型 ShareStruct 的二维数组 jobjectArray ret jobjectArray ins jobjectArray outs jclass myClass env gt FindClass env
  • 在 Swift 中以编程方式为 iOS 制作带有名字首字母的图像,例如 Gmail

    我需要在 UITableView 中显示与其姓名相对应的每个用户的个人资料图片 在下载图像之前 我需要显示一张带有他名字的第一个字母的图像 就像在 GMail 应用程序中一样 如何在 Swift for iOS 中以编程方式执行此操作 不需
  • python array(10,1) 和 array(10,) 之间的区别

    我正在尝试将 MNIST 数据集加载到数组中 当我使用 X train y train X test y test mnist load data 我得到一个数组 y test 10000 但我希望它的形状为 10000 1 数组 1000
  • XCode 7 中的 AWSS3TransferManagerUploadRequest

    我今天升级到 Xcode 7 Swift 2 0 我的项目正在使用 CocoaPods 我正在 POD 文件中导入所有与 AWS 相关的文件 我已经设置了桥接标头 并导入了 Amazon 告诉我的所有文件 在升级到 Swift 2 0 之前
  • iOS Swift 和 reloadRowsAtIndexPaths 编译错误

    我与 xCode Swift 陷入僵局并刷新 UITableView 的单行 这条线有效 self tableView reloadData 而这条线没有 self tableView reloadRowsAtIndexPaths curr
  • WKWebview 中的 iCLoud 文档选择器关闭容器视图

    我有一个 WKWebview 加载基于 Web 的 UI 我希望用户能够从其 iCloud 文档上传文件 我已授予正确的权限 并且可以浏览 iCloud 文档 但是 当我选择文件或单击取消按钮时 文档选择器视图也会关闭 WKWebview
  • 高效创建抗锯齿圆形蒙版

    我正在尝试创建抗锯齿 加权而不是布尔 圆形掩模 以制作用于卷积的圆形内核 radius 3 no of pixels to be 1 on either side of the center pixel shall be decimal a

随机推荐

  • 如何通过拖动扩展窗口框架来使 WPF 窗口可移动?

    在 Windows 资源管理器和 Internet Explorer 等应用程序中 人们可以抓住标题栏下方的扩展框架区域并拖动窗口 对于 WinForms 应用程序 窗体和控件尽可能接近本机 Win32 API 一个人会简单地覆盖WndPr
  • 总和投影和结果约束

    我在数据库中有 100 个实体 我想获取前 20 个实体的某些属性的总和 Criteria cr getSession createCriteria Entity class cr setFirstResult 0 cr setMaxRes
  • ggplot 中的躲避/替换/排斥轴刻度标签?

    如果没有大量工作 我想要的可能是不可能的 但也许有人有解决方案 我有一个如下图 当然这是一个过于简单的示例 其中我的刻度标签彼此非常接近 dd lt data frame x 1 4 y c 10 10 5 10 6 10 7 z LETT
  • python 如何在嵌套列表中搜索项目

    假设我有这个清单 li 0 20 ar 20 40 asdasd 50 199 bar 24 69 sarkozy 现在 忘掉数字吧 它们让我能够识别字符串的位置 所以基本上 鉴于我手头有字符串 ar 我如何提取包含 ar 的所有列表 ne
  • 将 MATLAB 单元格类型转换为 C++

    我正在使用 C 转换 MATLAB 程序犰狳 http arma sourceforge net docs html syntax对于矩阵代数 我被困住了cell http blogs mathworks com loren 2006 06
  • wxGrid 在右侧显示大的空白边框

    默认情况下 wxGrid 在最后一列之后的右侧显示一个小的 10 像素 空白边框 调用 SetMargins 对其没有任何影响 这很烦人 但我可以忍受 但是 如果我将行标签宽度设置为零 则空白边框会变得更大 如果我只有一列 效果会很糟糕 看
  • 送达收据请求不适用于 XMPP Android (aSmack)

    我正在使用 OpenFire 和 aSmack 我似乎无法让 送货收据 正常工作 创建连接时我执行以下操作 create connection connection login username password DeliveryRecei
  • c++ 打开文件的问题

    必须是一个简单的答案 但我不知所措 这是返回错误的代码 我尝试过带或不带起始斜杠 我不知道完整路径 我希望它是相对于exe的 这就是相对路径 我试图逃避斜线 我的问题是当文件存在时我收到 打开文件时出错 为什么它失败了 ifstream m
  • 如何编写恒定时间函数将最高有效位复制到所有位

    我想用 C 语言编写一个函数 它采用以下的 MSBuint8 t 如果已设置 则返回0xFF如果不0x00 简而言之 它返回一个整数 其中所有位都设置为与 MSB 相同的值 但我想以完全恒定的时间方式来完成它 没有分支 没有数组偏移 只是数
  • jq - 过滤器数组不包含

    我正在使用应用程序 jq 从命令行过滤 json 文件 https stedolan github io jq https stedolan github io jq 这是一个代表问题的糟糕例子 如何过滤该集合以包含所有非红色或非圆形的水果
  • 如何循环遍历文件来获取数据?

    我正在尝试进行基本登录并注册 C 控制台应用程序 但是 我需要循环遍历我的文件以查看用户输入的用户名和密码在登录时是否匹配 如果用户输入用户名和密码 我希望我的代码遍历我的文件以检查它是否是现有的用户名和密码 这是我的代码 Serializ
  • Pandas:将列转换为列表

    我有一个数据框 date member id val 2016 06 01 2377264 14 2016 06 01 289719 6 2016 06 02 289719 12 2016 06 02 2377264 1 2016 06 0
  • 如何更改 ng-repeat 中单个元素的 ng-click 行为?

    我正在重构一个用角度编写的表格 目前 ng repeat 用于创建多个表行 其中任何行在单击时都会重定向到给定的 ui sref tbody tr class tablebox content td class name user name
  • JAVA JNI C 调试器

    是否有任何调试器可以帮助调试 Java JNI 程序以及 C 库 我应该能够在Java中从static void main开始调试程序 并继续调试并在本机c函数中放置断点 然后在控制权从C转移到Java后继续在Java中调试 Java 虚拟
  • 在运行时执行 C# 或 VB.NET 代码

    最近在 Codility com 上花了一些时间 我突然想到了这个问题 它们如何执行您创建的代码 特别是与 C 和 VB NET 有关的代码 我基本上想知道的是 如何在表单上的文本框中输入一些代码 然后运行该代码 如果没有第三方工具 这可能
  • 为 Windows 开发计划任务

    我必须使用 C net 开发一个必须每天运行一次的应用程序 它最多只运行一分钟 因此开发 Windows 服务有点大材小用 计划任务是合适的方法 但是 我对应用程序如何传达其结果有一些疑问 如何向任务调度程序指示任务失败 这是通过程序的退出
  • 查找包含“inf”或“nan”的项目的索引

    以下是一个示例1 item在我的清单中 array 1 2 3 43 83 92 12 54 93 23 94 83 23 inf inf inf inf inf 83 33 33 83 13 83 83 nan 83 73 43 43 4
  • 如何避免实体框架 TPT 继承中的多态行为,以便有效地查询基类型

    Overview 我首先使用实体 框架 4 3 代码和流畅的界面来设置我的 DbContext 我有一个基地Item具有继承此类型的其他类型的类 例如Event BlogPost 论坛主题 WikiPage等等 这些继承的类型与我认为实体框
  • React-relay 嵌套突变后未获取有效负载

    这是一个后续问题这个答案 https stackoverflow com a 34776023 2030321早些时候在 SO 上发布了有关反应中继突变警告的文章 在这种情况下 您需要做的是将 FeatureLabelNameMutatio
  • 如何在 for 循环中安全地从数组中删除项目?

    完全透露 这是一个家庭作业问题 它应该有一个 Circle 类型的私有属性 一系列圆圈 该方法应删除半径大于的任何圆 最小要求 并且小于最大要求 看来我应该使用removeAtIndex 删除不满足循环中确定的条件的数组项 然而 许多人之前