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>()
第一个只是一个类型,您可以在声明变量或函数参数时使用它。
第二个调用该类型的无参数构造函数,即创建该类型的实例。
我试着四处寻找这是什么
[]()
但我不太确定。在操场上,我这样做了:
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>()
第一个只是一个类型,您可以在声明变量或函数参数时使用它。
第二个调用该类型的无参数构造函数,即创建该类型的实例。