首页 文章

Swift init(count:,repeatedValue :)是否有效?

提问于
浏览
19

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

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

我收到了这个错误:

Playground执行失败:错误:: 5:14:错误:无法找到接受提供的参数的'init'的重载var string = String(count:5,repeatedValue:“a”)

这实际上有用吗?

6 回答

  • 0

    Swift 3:

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

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

  • 0

    看来你必须明确传入一个Character类型才能运行 . 这对我有用 .

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

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

    编辑:我要跟bug一起去 . 以下编译就好了 .

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

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

  • 6

    这很好用:

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

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

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

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

相关问题