【问题标题】:Swift 3 - Having issue mutating value of Array in FunctionSwift 3 - 在函数中出现 Array 变异值的问题
【发布时间】:2017-06-04 00:19:47
【问题描述】:

我试图从这个数组中每个单词的字符串中取出最后一个字符:

var nonsenseArray = ["bungalow", "buffalo", "indigo", "although", "Ontario", "albino", "%$&#!"]

并使用函数中的for循环创建一个包含每个字符的字符串。我觉得我有一个很好的答案,但收到以下错误:

cannnot use mutating member on immutable value: "every" is a "let" constant

下面是我的代码:

func combineLastCharacters(array: [String]) -> String {
    var myString = ""
    var array = array
    for every in array {
        myString = "\(every.remove(at: every.index(before: 
        every.endIndex)))" + myString
}
return myString

我从其他答案中发现:

var array = array

array 应该是可变的,所以我可以使用 remove 方法。任何帮助是极大的赞赏。

我要创建的字符串是“woohoo!”

【问题讨论】:

    标签: arrays swift function


    【解决方案1】:

    array 可能是可变的,但 every 不是,remove(at:) 正试图改变它。此外,您将在字符串的开头附加字符。试试这个:

    func combineLastCharacters(array: [String]) -> String {
        var myString = ""
        for var every in array {
            myString += "\(every.remove(at: every.index(before: 
            every.endIndex)))"
        }
        return myString
    }
    

    或者只是:

    func combineLastCharacters(array: [String]) -> String {
        return array.reduce("", { $0 + String($1.characters.last!) } )
    }
    

    【讨论】:

    • 现在,当我尝试打印函数时,我收到编译器警告并且没有输出。警告是:“变量数组从未发生突变:考虑更改为‘让’常量”。我使用了您在每个之前添加 var 的建议,这解决了第一个问题。
    • @Cali_Ranger 关于编译器警告,请注意我在复制函数时删除了var array = array 行。关于没有输出:你用什么代码来打印?
    • 我认为缺少输出是由于编译器警告造成的。一旦我删除了var array = array,代码就起作用了。
    【解决方案2】:

    你无法改变。变量every,因为它被定义为不能更改的let常量,我想你想要substring而不是remove

    func combineLastCharacters(array: [String]) -> String {
        var myString = ""
        for every in array {
            myString = "\(every.substring(from: every.index(before: every.endIndex)))" + myString
        }
        return myString
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      相关资源
      最近更新 更多