这是我的代码:
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]