为什么我不能初始化这组

时间:2018-12-12 08:08:45

标签: swift

var startset=Set<String>("asdasd","sadad")

错误:

通话中缺少参数标签“ arrayLiteral:”


我受到启发:

var ok=String("sdsf")

打印sdsf

2 个答案:

答案 0 :(得分:3)

您可以使用String来完成此操作,因为恰好String有一个初始化程序:

public init<S>(_ other: S) where S : LosslessStringConvertible, S : Sequence, S.Element == Character

String符合S的所有约束,因此可以将其传递给此初始化程序,并且您可以通过这种方式创建字符串。

Set是一个完全不同的类,它没有可向其传递2个String的初始化程序,因此您无法通过传递2个字符串来创建集合。

如果要创建一个以2个字符串为元素的集合,则可以使用数组文字:

let set: Set<String> = ["asdasd","sadad"]

或者,如果您想显式调用初始化程序,

let set = Set<String>(["asdasd","sadad"])

答案 1 :(得分:1)

要初始化Set,您需要使用Sequence类型的值:例如Array。

为此:

var startset=Set<String>(["asdasd","sadad"])