Подтвердить что ты не робот

Выполняется ли Swift init (count:, repeatValue:)?

Протестировано это из ссылки: https://developer.apple.com/documentation/swift

var string = String(count: 5, repeatedValue: "a")
// string is "aaaaa"

Я получил эту ошибку:

Выполнение игровой площадки не выполнено: ошибка:: 5: 14: ошибка: не удалось найти перегрузку для 'init', которая принимает предоставленные аргументы var string = String (count: 5, repeatValue: "a" )

Это действительно работает?

4b9b3361

Ответ 1

Кажется, что вам нужно явно передать тип символа, чтобы он функционировал. Это работает для меня.

let char = Character("a")
let string = String(count: 5, repeatedValue: char)

Хотя, возможно, ошибка со смехом со всем этим. Я считаю, что то, как вы делали это, должно было работать само по себе. И я никак не могу получить завершение кода в этом инициализаторе.

Изменить: я собираюсь с ошибкой. Следующие компилируются просто отлично.

let array = Array(count: 5, repeatedValue: "a")

Ответ 2

В интересах будущих искателей: с Swift 3 используйте init(repeating:count:).

Ответ 3

Это прекрасно работает:

var str9 = String(count: 5,repeatedValue: Character("c"))

Ответ 4

Для всех, кто в swift 3.x, теперь что-то вроде этого будет работать как шарм.

var string = String(repeating: "a", count: 5)

Ответ 5

Я знаю, что это старый вопрос и уже есть ответ. Однако я думаю, что знаю , почему String(count: 5, repeatedValue: "a") не работает.

Вещь String имеет два похожих вида initialisers:

init(count: Int, repeatedValue: Character)
init(count: Int, repeatedValue: UnicodeScalar)

Итак, в этом случае компилятор не может определить, является ли литерал Character или UnicodeScalar, поэтому компилируйте временную ошибку, если вы не передаете явный Character. Чтобы подтвердить, что "a" можно интерпретировать как UnicodeScalar, вы можете проверить, что эта строка компилируется:

let a: UnicodeScalar = "a"

Ответ 6

Swift 3:

var array = Array(repeating: 0, count: 5)

Выход: [0, 0, 0, 0, 0]