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

String Swift init(count:,repeatedValue:)有效吗?,string,swift,swift-playground,String,Swift,Swift Playground,从参考资料中对此进行了测试: 我得到了这个错误: 游乐场执行失败:错误::5:14:错误:找不到接受所提供参数的“init”的重载 变量字符串=字符串(计数:5,重复值:“a”) 这真的有效吗?似乎您必须显式地将字符类型传递给它才能运行。这对我有用 let char = Character("a") let string = String(count: 5, repeatedValue: char) 尽管如此,也可能会有bug混入其中。我相信你这样做应该是成功的。我似乎根本无法完成这个初始值设

从参考资料中对此进行了测试:

我得到了这个错误:

游乐场执行失败:错误::5:14:错误:找不到接受所提供参数的“init”的重载 变量字符串=字符串(计数:5,重复值:“a”)


这真的有效吗?

似乎您必须显式地将字符类型传递给它才能运行。这对我有用

let char = Character("a")
let string = String(count: 5, repeatedValue: char)
尽管如此,也可能会有bug混入其中。我相信你这样做应该是成功的。我似乎根本无法完成这个初始值设定项的代码

编辑:我要和bug一起去。下面的代码编译得很好

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

这很好:

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

我知道这是一个老问题,已经有了答案。但是我想我知道为什么字符串(count:5,repeatedValue:“a”)不起作用

问题是,
String
有两种相似的外观:

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

let a: UnicodeScalar = "a"

为了方便未来的搜索者:从Swift 3开始,使用
init(重复:count:)


Swift 3:

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

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

对于swift 3.x中的任何人来说,现在都是这样的,这将非常有效

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

这管用!奇怪的是,Swift参考指南犯了这么大的错误。似乎repeatedValue必须是字符类型,但在Swift中没有明显的方法来生成字符文字(在C中,您使用单引号而不是双引号)。指南没有损坏,类型推断引擎是。Subscripting是一个很好的例子,尽管它有真正显式的类型,但它还是会一败涂地。在Xcode 8.1中使用Swift 3时,语法发生了变化,在本例中是:let array=array(重复:“a”,count:5)是的,但基本上与上面的答案相同。谢天谢地,此更新的初始值设定项还接受字符串而不是字符。
let sososo = String(repeating: "so", count: 3)
var array = Array(repeating: 0, count: 5)
var string = String(repeating: "a", count: 5)