Swift:$0 在 Array.forEach 中如何工作?

2023-11-21

我看到大多数 swift 开发人员都开始使用 .forEach,了解它是迭代数组的另一种方式。但“$0”的含义是什么以及它是如何工作的?如果它是一个索引那么它应该增加 0,1,2...

@IBOutlet var headingLabels: [UILabel]!
....

headingLabels.forEach { $0.attributedText = NSAttributedString(string: $0.text!, attributes: [NSKernAttributeName: 1]) }

简短回答

看这段代码

let nums = [1,2,3,4]
nums.forEach { print($0) }

这里关闭如下forEach

我的意思是这部分{ print($0) }

执行 4 次(数组中的每个元素执行一次)。每次执行时$0包含一个copy of the n-th你的元素nums array.

所以第一次包含1, then 2等等...

这是输出

1
2
3
4

比较forEachfor-in构造

那么我们可以说$0就像n下面代码中的值?

for n in nums {
    print(n)
}

是的,它的含义几乎相同。

它是如何工作的?

The forEach方法接受一个闭包。封盖上有此签名。

(Self.Generator.Element) throws -> Void

当您使用forEach它与你签订了一份“合同”。

  1. 您提供给forEach在输入中接受单个参数的闭包,其中参数具有与数组相同的类型
  2. The forEach将该闭包应用于数组的每个元素。

Example

nums.forEach { (n) in
    print(n)
}

然而在 Swift 中,你可以省略闭包参数的显式名称。在闭包内部,您可以使用以下参数引用该参数$0对于第一个参数,$1第二个,依此类推。

所以前面的代码片段也可以写成如下

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

Swift:$0 在 Array.forEach 中如何工作? 的相关文章

  • SwiftUI:为表单中的单元格添加动画

    我正在尝试动画化我的Form或者更确切地说是其中的细胞 我的问题是 下面的代码给了我一个很好的插入动画 但是对于删除 单元格在看起来很丑陋的延迟后突然被删除 import SwiftUI struct ContentView View St
  • 如何在 Facebook SDK for iOS 中定义“GeoPoint”属性

    我试图通过创建一个继承预定义 地点 对象的开放图对象来对开放图故事进行地理标记 但是 我不知道如何在 iOS 中定义 GeoPoint 属性 place location 这里有一个类似问题的答案 https stackoverflow c
  • 在 Mac OSX 上交叉编译 x86_64-unknown-linux-gnu 失败

    我尝试将我的 Rust 项目之一编译到 x86 64 unknown linux gnu 目标 cargo build target x86 64 unknown linux gnu Compiling deployer v0 1 0 fi
  • 在覆盖 UIView 的右下角创建四分之一透明孔

    您好 我想在覆盖 UIView 的右下角创建一个四分之一透明孔 我可以使用下面的代码解决它 但它看起来不正确 因为我在视图之外创建了一个矩形 我尝试过的 implementation PartialTransparentView id in
  • 液体标记图过滤器示例

    我可以举一个有关 Liquid 贴图过滤器如何工作的通用示例吗 似乎没有这方面的文档 映射过滤器是 映射 收集给定属性上的数组 但如何确定该属性 这个例子存在 液体模板贴图过滤器 https stackoverflow com questi
  • 如何在谷歌地图中绘制多个点之间的路线?

    我已经在我的应用程序中实现了谷歌地图 并且我需要在地图上标记几个点 我能够用标记标记它们 但我面临的问题是尝试绘制所有这些点之间的路径 我尝试使用折线 但它只是在 A 点和 B 点之间绘制一条直线 我还尝试了谷歌地图 DirectionsA
  • Swift 语言中的抽象函数

    我想用 swift 语言创建一个抽象函数 是否可以 class BaseClass func abstractFunction How do I force this function to be overridden class SubC
  • 如何使用 swift 在 UITabBarController 中以编程方式添加选项卡?

    如何以编程方式从 UIViewController 扩展的任何类创建选项卡 class DashboardTabBarController UITabBarController override func viewDidLoad here
  • 在 Swift 中动态设置 Dictionary 的属性

    我正在尝试根据字典中的值在类上设置一些属性 目前我正在这样做 let view UIView UIView if let hidden Bool self props hidden as Bool view hidden hidden if
  • 在 WidgetKit 中每分钟更新时间文本标签

    是否可以在小部件中创建显示当前时间并实时更新的文本标签 尝试创建时钟小部件 但小部件每 5 分钟仅更新 1 次 创建时间表没有帮助 使小部件保持最新 不适用于当前时间 仅适用于计时器等 一个可能的解决方案是使用time日期样式 A styl
  • iOS设备和iPhone模拟器内存​​组织的差异

    我正在尝试使用 Xcode 4 3 3 和 iPhone 5 1 模拟器开发一个应用程序 当我在模拟器上运行这个应用程序时 我没有收到任何警告 并且它运行得很好 但是 当我尝试在 iOS 设备上执行此操作时 我收到一条警告消息 收到内存警告
  • 有没有办法在 iOS 上获取相机流的亮度级别?

    我正在使用 iPhone iPad 摄像头获取视频流并在视频流上进行识别 但随着光照的变化 它会对鲁棒性产生负面影响 我已经在不同的光线下测试了不同的设置 并且可以让它工作 但尝试在运行时调整设置是我所需要的 我可以对每一帧进行简单的亮度检
  • 我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?

    在我的项目中 我将所有私有 swift 2 3 文件迁移到 swift 3 我想使用用 swift 2 3 编写的遗留框架 直到它们有 swift 3 版本 我尝试添加 使用旧版 Swift 版本 是 清除 构建我的项目 但我仍然遇到一些麻
  • 有没有办法在iOS模拟器上使用苹果的Touch ID(指纹扫描仪)?

    我正在开发一个需要 Touch ID 身份验证的应用程序 那么有什么方法可以在模拟器中使用 Touch ID 指纹扫描仪 另外 请分享一些使用 LocalAuthentication 框架的示例代码 XCODE 7 beta支持在iPhon
  • 多维数组将每个列表数组存储在另一个数组中

    我嵌套了可能有 2 或 3 层深度的多维数组 在它里面我可能有也可能没有列表数组 我需要循环数组 Array 0 gt Array id gt 1 name gt cat name 1 list gt Array 1 gt swgdgbdg
  • 为什么 C 函数不能返回数组类型?

    我是 C 语言新手 想知道 为什么 C 函数不能返回数组类型 我知道数组名是数组第一个值的地址 而数组是 C 中的二等公民 您自己已经回答了这个问题 数组是二等公民 C 按值返回 数组不能按值传递 因此不能返回它们 至于为什么数组不能按值传
  • 如何在UiView中添加UIImagePickerController

    如何在TabBarApplication中的UiView中添加UIImagePickerController 无论您是否在选项卡中 此代码都会进入您视图的 ViewController 类 当您需要时创建一个选择器 UIImagePicke
  • 从由空格分隔的单个输入整数列表创建二维数组

    我正在解决一些问题geeksforgeeks我遇到了一个特定的问题 其中在测试用例中提供了输入 如下所示 2 2 denotes row column of the matrix 1 0 0 0 all the elements of th
  • 使用自动布局时 UIScrollview 的中心内容

    我在项目中使用自动布局 并且有一个滚动视图 其中有一个居中的按钮 我已经让滚动视图滚动 但不占据整个屏幕 我尝试按照此处的教程进行操作 https developer apple com library ios technotes tn21
  • SpriteKit - 对多个 SKNode 上运行的多个 SKAction 进行排序

    我非常了解 SKAction API 但在多个节点上运行顺序代码时我无法获得良好的代码 这是示例代码 简化 import SpriteKit class GameScene SKScene weak var node1 SKNode wea

随机推荐

  • 发送 HEAD 请求时 cURL 挂起 15 秒

    背景 我一直在使用 CLI 通过 CLI 对一些 HTTP 请求进行计时time和工具 例如wget and curl如下 usr bin time v wget spider http localhost index usr bin ti
  • Javascript 中带有负移位计数的左移

    我在 Javascript 中注意到的一件事 一个 Returns 0 when a even Returns 2147483648 when a odd 同样 当 1更改为其他一些 ve数字 有人可以解释一下幕后发生了什么位操作吗 或者行
  • Keras 中随时间变化的最大池化

    我正在使用 CNNKeras对于 NLP 任务 我尝试实现随时间推移的最大池化 而不是最大池化 关于如何实现这一目标有什么想法 技巧吗 我所说的最大随时间池化的意思是池化最高值 无论它们位于向量中的哪个位置 假设您的数据形状是 batch
  • 如何管理多个环境的 ASP.NET Core bundleconfig.json?

    使用 ASP NET Core 的最佳实践是什么bundleconfig json开发环境与生产环境 先前的捆绑器 捆绑集合 会注意 DEBUG 编译器指令 并且在调试时不会缩小脚本列表 看起来新的范式似乎是
  • Hg (Mercurial):有什么办法可以“留出”工作副本供以后使用吗?

    场景 在上次提交之后 您决定对代码库进行一些广泛的重构 一段时间后 您意识到花费的时间比预期的要长 您真的宁愿将重构推迟到另一时间 并致力于更紧迫的任务 但您不想丢失迄今为止所做的所有重构工作 那么 有没有办法 归档 或 分支 工作副本 本
  • 如何防止 PHP 中的 SQL 注入?

    这个问题的答案是社区努力 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 如果用户输入未经修改就插入到 SQL 查询中 则应用程序很容易受到攻击SQL注入 如以下示例所示 unsafe variable POST user input
  • Threejs:如何动态改变平面的宽度和高度?

    有没有办法轻松动态地改变平面的宽度和高度 下面的代码没有任何效果 plane geometry parameters width width plane geometry parameters height height 创建平面网格 va
  • 有人在同一个项目中使用过 Dojo 和 JQuery 吗?

    有人在同一个项目中使用过 Dojo 和 JQuery 吗 我需要一个 Dojo 面向对象的部分 仅此而已 和 JQuery 以便于演示 但我担心碰撞和名称冲突 是否可以在同一页面上使用两者 use jQuery noConflict 在编写
  • Unix 将月份名称转换为数字

    在 BASH shell 脚本或使用 gdate 中 给定像 2011 年 10 月 这样的日期 如何转换为年月数字格式 例如 输出应为 2011 10 mydate Oct 2011 date date printf 01 s mydat
  • ini 文件 - 从另一个 ini 文件引用变量

    如何从另一个 ini 文件解析变量 在下面的示例中 我想解析var a来自original configuration ini 并在 处使用它new configuration ini original configuration ini
  • 提取文件名 shell 脚本的一部分

    在 bash 中 我想提取许多文件名的一部分并将该输出保存到另一个文件中 这些文件的格式为 Coffee SOME NUMBERS I WANT freqdist bin sh for f in find name coffee freqd
  • 理解 nth-child(an + b):CSS3 中带有公式的选择器?

    The i 用于第一个图标和子元素 div 应该有一个大图标 任何其他 i 任何的孩子 div 但不是第一个 应该有一个中等大小的图标 div class row list item div class span1 i class icon
  • HTML 单选按钮允许多项选择

    在我的 HTML 表单中 我有以下一组单选按钮 具体取决于您选择的单选按钮取决于下一个表单 fieldset 据透露 这一切都有效 问题是由于某种原因 它们像复选框一样工作 而不是单选按钮 因此 您可以选择所有选项 而不仅仅是一次选择一个选
  • 如何测试 Akka actor 是在 Scala 中创建的

    我正在尝试编写一个测试来验证下面的演员是否正在创建一个 heartBeatExpireWorker 和一个 heartBeatAccepter 但我不知道该怎么做 首先 我想我可以使用 Mockhito 模拟或间谍来代替上下文 然后验证我是
  • 使用 jsch 库复制 sftp 中的文件

    import com jcraft jsch public class App public static void main String args JSch jsch new JSch Session session null try
  • RecordNotFound 带有accepts_nested_attributes_for 和belongs_to

    I get ActiveRecord RecordNotFound 无法为 ID 的订单找到 ID 3 的客户端 当尝试为现有客户提交订单时 这是通过表单或控制台输入以下内容来实现的 Order new client attributes
  • 将值从一个 Python 程序传递到另一个

    除了使用 txt 虚拟文件之类的东西之外 是否可以将值从一个程序传递到另一个程序 我有一个程序 它使用 txt 文件将起始值传递给另一个程序 每次运行程序时 我都会在启动程序之间更新文件中的值 十次 基本上是同时 这样做很好 但我想让 子
  • R将传统图和ggplot2放在一起[重复]

    这个问题在这里已经有答案了 我有两张图表 一张地图是用ggplot2像这样 w lt ggplot geom polygon data dep shp df aes x long y lat group group fill classJe
  • 更改谷歌地图 api v2 中标记的 InfoWindow 视图的边距颜色

    你好 我尝试将默认颜色 白色 更改为黑色 这是在谷歌地图 API v2 中 有人知道我该怎么做吗 PD 是信息窗口的边距 这是我的代码 我在其中更改信息窗口的内容 但需要更改边距 S GoogleMap map map setInfoWin
  • Swift:$0 在 Array.forEach 中如何工作?

    我看到大多数 swift 开发人员都开始使用 forEach 了解它是迭代数组的另一种方式 但 0 的含义是什么以及它是如何工作的 如果它是一个索引那么它应该增加 0 1 2 IBOutlet var headingLabels UILab