2015-01-26 112 views
1

刚开始使用Swift,我对一些元素感到恼火。首先,大多数标准的东西都是结构而不是对象,这意味着它们是按照我习惯的价值而不是指针传入的。另一件事是使用可选的元素系统真的很烦人。在Swift中使用数组

如果我想声明一个数组没有把任何东西在里面,我宣布这样的:

var theArray : [Int] 

为了放任何东西,我将宣布这样的:

var theArray : [Int]? 

然后添加对象如下:

theArray[someIndex] = someInt 
//or 
theArray.append(someInt) 

但是,我得到一个错误。在Java中,我可以刚刚初始化一个长度为数组的数组,这会给我一个固定大小的数组,其中全为0。

这个问题总结在一个语句中,是将元素添加到没有值初始化的Swift数组中。你怎么做到这一点?

+1

你已经声明了数组,你还没有初始化它。 @zellb的答案看起来像一个没有值数组实际初始化的好例子。顺便说一句,包括你得到的错误对于你的问题总的来说是个好主意 – lascort 2015-01-26 19:04:24

回答

2

为了初始化为空数组使用:

var theArray : [Int] = [] 

然后通过使用附加方法添加元素。你现在做的是,你只是在第一种情况下声明它是非可选的,在第二种情况下声明它是一个可选变量,类型为int数组而不初始化它。

1

如果你想要数组包含Int类型,当然有很多方法可以基于隐式或显式类型推断来声明它。这些是包含Int类型

var array1 = [Int]() 
var array2: [Int] = [] 
var array3 = Array<Int>() 
var array4: Array<Int> = [] 

如果你想有一定大小的数组的数组的所有有效的声明,用值初始化到一定值时,您可以使用,在这个例子中,你会得到一个Array<Int>与5个元素,所有的初始化为0

var array = Array(count: 5, repeatedValue: Int(0)) 
0

在这里你去:

var theArray = Array(count:[the length you want], repeatedValue:Int(0)) 

这将复制Java的行为。