swift中[]和[]()之间的区别

时间:2015-01-02 17:45:07

标签: swift

我试着四处寻找这是什么

[]()

但我不太确定。在操场上,我这样做了:

var test = [Int]();
test.append(1);
test.append(2);

如果我离开()并执行

var test = [Int];
test.append(1);
test.append(2);

对我来说它看起来像是一堆Ints。有人可以解释这个区别吗?提前致谢。

2 个答案:

答案 0 :(得分:4)

Type()表示“致电init()” - 即创建Type的新实例。

[Int]是一种类型,例如String[Int]表示“array-of-Int”。

String()创建一个新的空String实例。 [Int]()创建一个新的空数组实例。

您可以将变量声明为array-of-Int类型。或者您可以创建并分配一个新的Int-array实例。你在这做什么:

var test = [Int]()

但是如果没有进一步的语法,你就无法为变量赋值。因此,这是非法的:

var test = [Int]

EXTRA for experts

可以说:

var test = [Int].self

将类型分配给变量!这不太可能是你想要的,因为现在你没有阵列;你有一个类型,作为对象!!

答案 1 :(得分:0)

[Type]Array<Type>的语法糖,因此它表示数组类型,它是一个通用结构,并为其指定它所包含的元素类型(Int例如)

所以区别:

[Int]

[Int]()

相同
Array<Int>

Array<Int>()

第一种只是一种类型,在声明变量或函数参数时可以使用。

第二个调用该类型的无参数构造函数,即创建该类型的实例。