You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中array.map(CGFloat.init(_:))的作用是什么?

关于Swift中CGFloat.init(_:)在map中的用法解释

首先,这段代码里的CGFloat.init(_:)本质是CGFloat的一个初始化器函数,你可以把它当成普通函数传递给map方法,具体拆解如下:

  1. 初始化器的本质
    Swift里的初始化器(init)本身属于一等函数。CGFloat有一个接收Int类型参数的初始化器,声明逻辑大致是:
extension CGFloat {
    init(_ value: Int)
}

这里的下划线_表示调用该初始化器时无需写参数标签,所以平时你可以直接写CGFloat(100),不用写成CGFloat.init(value: 100)。

  1. 适配map的原因
    对于[Int]类型的数组,map方法需要一个(Int) -> CGFloat类型的转换函数——也就是接收一个Int、返回一个CGFloat的函数。而CGFloat.init(_:)的签名正好匹配这个类型:它接收Int参数,返回CGFloat实例,因此可以直接传递给map,替代手动编写闭包。

  2. 等价写法对比
    这段代码和下面的闭包写法完全等效,只是前者更简洁:

let floats = array.map { CGFloat($0) }

两种写法的最终效果都是把数组里的每个Int元素转换成CGFloat类型。

  1. 查阅文档的方向
  • 可以看Swift官方文档中“初始化器作为一等函数”的相关内容,了解初始化器可像普通函数一样传递、赋值的特性。
  • 直接查看CGFloat的初始化器文档,找到接收Numeric类型(包含Int)的那个初始化器,就能看到它的参数标签为_,以及具体使用说明。

内容的提问来源于stack exchange,提问作者clearlight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 07:24:18