Arrays 在Swift中创建具有两种变量类型的二维数组
您可以使用以下工具在swift中创建一种类型变量的二维数组:Arrays 在Swift中创建具有两种变量类型的二维数组,arrays,swift,multidimensional-array,Arrays,Swift,Multidimensional Array,您可以使用以下工具在swift中创建一种类型变量的二维数组: var array2D: [[String]] = [["hi", "bye"], ["hello", "goodbye"]] 我想创建一个二维数组,其中第二个变量为Float,沿以下几行: var array2d2types = [[String,Float]] = [["height",1],["width",2]] 但这会产生错误:无法分配给“[[Any]]”类型的不可变表达式。 如何创建一个数组数组,每个数组都有一个字符串
var array2D: [[String]] = [["hi", "bye"], ["hello", "goodbye"]]
我想创建一个二维数组,其中第二个变量为Float,沿以下几行:
var array2d2types = [[String,Float]] = [["height",1],["width",2]]
但这会产生错误:无法分配给“[[Any]]”类型的不可变表达式。
如何创建一个数组数组,每个数组都有一个字符串和一个浮点?Swift数组是同构的,因此不能在同一数组中存储不同类型的元素。但是,可以使用元组数组而不是嵌套数组来实现目标
let array: [(String,Float)] = [("height",1),("width",2)]
可以使用正常的下标语法访问元组
let firstTuple = array[0]
以及使用点语法的元组元素
let height = firstTuple.0
let heightValue = firstTuple.1
但是,您应该使用自定义结构或更好的内置
CGSize
来存储高度-宽度值。Swift数组是同质的,因此不能在同一数组中存储不同类型的元素。但是,可以使用元组数组而不是嵌套数组来实现目标
let array: [(String,Float)] = [("height",1),("width",2)]
可以使用正常的下标语法访问元组
let firstTuple = array[0]
以及使用点语法的元组元素
let height = firstTuple.0
let heightValue = firstTuple.1
但是,您应该使用自定义结构,或者更好地使用内置的
CGSize
来存储高度-宽度值。如果要存储各种类型,您应该使用自定义struct
。这样做的另一个好处是,您可以使用有意义的名称而不仅仅是索引来访问这些值:
struct Record {
var string: String
var float: Float
// Structs give you an init for free, but require you to list the names.
// For conciseness I created this func to make it closer to your example
static func i(_ string: String, _ float: Float) -> Record {
return Record(string: string, float: float)
}
}
var records: [Record] = [.i("height", 1), .i("width", 2)]
print(records[0].string) // "height"
print(records[0].float) // 1.0
如果要存储各种类型,应使用自定义的
结构。这样做的另一个好处是,您可以使用有意义的名称而不仅仅是索引来访问这些值:
struct Record {
var string: String
var float: Float
// Structs give you an init for free, but require you to list the names.
// For conciseness I created this func to make it closer to your example
static func i(_ string: String, _ float: Float) -> Record {
return Record(string: string, float: float)
}
}
var records: [Record] = [.i("height", 1), .i("width", 2)]
print(records[0].string) // "height"
print(records[0].float) // 1.0
改为使用元组(或自定义结构)。Leo,我尝试从任意向下转换为浮点,但遇到了问题。不要这样做,我建议您使用CGSize对象数组let size:[CGSize]=[.init(宽度:2,高度:1)]
使用宽度和高度可能会产生误导,这些可能是任何字符串
,为什么不笼统地考虑一下,你将如何处理应用程序流中的键名???使用元组(或自定义结构)。Leo,我尝试从任意向下转换为浮动,但遇到了问题。如果不这样做,我建议您使用CGSize对象数组let size:[CGSize]=[.init(宽度:2,高度:1)]
使用宽度和高度可能会产生误导,这些可能是任何字符串
,为什么不笼统地考虑它们?如何处理应用程序流中的关键字名称???我将如何访问它们?是否使用数组[0]访问一个元组?我可以访问高度/宽度为let mystring=array[0][0]和1/2为let myfloat=array[0][1]let mystring=array[0]。0
和let myfloat=array[0]。1
太棒了!谢谢,我该如何访问这些?是否使用数组[0]访问一个元组?我可以访问高度/宽度为let mystring=array[0][0]和1/2为let myfloat=array[0][1]let mystring=array[0]。0
和let myfloat=array[0]。1
太棒了!非常感谢。