почему я не могу инициализировать этот набор - PullRequest
0 голосов
/ 12 декабря 2018
var startset=Set<String>("asdasd","sadad")

Ошибка:

Отсутствует метка аргумента 'arrayLiteral:' в вызове


Я вдохновлен этим:

var ok=String("sdsf")

печатает sdsf

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы можете сделать это с помощью 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"])
0 голосов
/ 12 декабря 2018

Для инициализации Set вам нужны значения типа Sequence: например, Array.

Для этого:

var startset=Set<String>(["asdasd","sadad"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...