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

difference between [] and []() in swift

我试着四处寻找这是什么

[]()

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

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

如果我离开 () 并执行

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

在我看来它仍然像一个整数数组。有人可以解释其中的区别吗?提前致谢。

Type() 表示 "call init()" - 即创建 Type.

的新实例

[Int] 是一种类型,如 String[Int] 表示 "array-of-Int".

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

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

var test = [Int]()

但是如果没有进一步的语法,您不能将类型分配给变量。因此,这是非法的:

var test = [Int]

专家额外

可以说:

var test = [Int].self

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

[Type]Array<Type> 的语法糖,所以它表示数组类型,它是一个通用结构体,您可以指定它包含的元素类型(Int在这个例子中)

所以两者的区别:

[Int]

[Int]()

相同
Array<Int>

Array<Int>()

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

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