创建一个 CGFloat 类型的数组,其中有多个值



这是我的代码:

var array = [(0.0, 0.0, 0.0, 0.0)]

Xcode认为它是一个双数组。它应该是一个CGFloat数组。我已经试过了

var array: CGFloat = [(0.0, 0.0, 0.0, 0.0)]
var array = [(0.0, 0.0, 0.0, 0.0)] as! CGFloat
var array: [CGFloat] = [(0.0, 0.0, 0.0, 0.0)]

和其他一些选择都没有成功。如何让 Xcode 知道这是一个 CGFloat 数组?我现在无法将值附加到数组中。

你的代码是一个元组数组!放下(),你就好了。

//: Playground - noun: a place where people can play
import Cocoa
// What you want, an array of type [CGFloat]
let rightArray: [CGFloat] = [0.0, 0.0, 0.0, 0.0]
// What you have, an array of type [(Double, Double, Double, Double)] (an array of tuples that contain 4 doubles)
let wrongArray = [(0.0, 0.0, 0.0, 0.0)]

使用文字初始化 Swift 数组的正确且简单的方法:

let array: [CGFloat] = [0.0, 0.0, 0.0, 0.0]

或者,如果您真的想用重复值初始化它:

let array = [CGFloat](count: 4, repeatedValue: 0.0)

实际上,您应该考虑以下几点:

  • var array = [(0.0, 0.0, 0.0, 0.0)]不是双精度数组,它是一个包含四个双精度的元组数组,即如果您尝试cmd并单击array,您将看到其数据类型为:[(Double, Double, Double, Double)]

改编自 Swift 文档:

元组将多个值分组为单个复合值。价值观 元组中可以是任何类型,不必相同 键入为彼此。

  • 如果你非常确定要把它做成一个元组数组,但你不能让它作为CGFloats的元组数组,它应该是:

    var array: [(CGFloat, CGFloat, CGFloat, CGFloat)] = [(0.0, 0.0, 0.0, 0.0)]

    其数据类型将为[(CGFloat, CGFloat, CGFloat, CGFloat)]

  • 如果您的目的是让 CGFloats 数组,那么在声明它时无需添加()

    let array: [CGFloat] = [0.0, 0.0, 0.0, 0.0]

    请注意,将浮点数分配给变量时,它应该是Double的类型,因此您必须提供所需的数据类型(在您的情况下是[CGFloat])。

希望这有帮助。

如果你使用var array: [CGFloat] = [0.0, 0.0, 0.0, 0.0]

最新更新