Выполняется ли 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" )
Это действительно работает?
Ответы
Ответ 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]