23

从参考中对此进行了测试: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”)

这真的有效吗?

4

6 回答 6

26

似乎您必须显式地将 Character 类型传递给它才能起作用。这对我有用。

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

虽然,这一切也可能混杂了错误。我相信你这样做的方式应该是独立的。而且我似乎根本无法在这个初始化程序上完成代码。

编辑:我要解决错误。以下编译就好了。

let array = Array(count: 5, repeatedValue: "a")
于 2014-06-28T03:09:30.877 回答
12

为了未来的搜索者的利益:从 Swift 3 开始,使用init(repeating:count:).

let sososo = String(repeating: "so", count: 3)
于 2016-10-04T21:01:58.163 回答
6

这工作得很好:

var str9 = String(count: 5,repeatedValue: Character("c"))
于 2014-06-29T06:54:59.840 回答
2

对于 swift 3.x 中的任何人来说,现在这样的事情就像一个魅力。

var string = String(repeating: "a", count: 5)
于 2017-12-15T09:40:19.433 回答
1

我知道这是一个老问题,并且已经有了答案。但是我想我知道为什么 String(count: 5, repeatedValue: "a")不起作用。

事情是String有两个看起来相似的初始化程序

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

因此,在这种情况下,编译器无法判断文字是否为Characteror UnicodeScalar,因此如果您不传递显式,则编译时错误Character。要确认"a"可以解释为UnicodeScalar您可以检查此行是否编译:

let a: UnicodeScalar = "a"
于 2016-06-18T12:15:53.737 回答
0

斯威夫特 3:

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

输出:[0, 0, 0, 0, 0]

于 2017-08-04T19:02:24.230 回答