Swift init(count:,repeatedValue :)有效吗?

时间:2014-06-28 02:58:10

标签: string swift swift-playground

从参考文献中测试过:https://developer.apple.com/documentation/swift

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

我收到了这个错误:

  

游乐场执行失败:错误:: 5:14:错误:无法找到' init'接受提供的参数   var string = String(count:5,repeatedValue:" a")

这实际上有用吗?

6 个答案:

答案 0 :(得分:26)

似乎你必须明确地传入一个Character类型才能运行。这对我有用。

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

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

编辑:我和bug一起去了。以下编译就好了。

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

答案 1 :(得分:7)

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

答案 2 :(得分:6)

这很好用:

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

我知道这是一个老问题,已经有了答案。但是我想我知道为什么 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"

答案 5 :(得分:0)

斯威夫特3:

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

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