【问题标题】:Cannot convert return expression in array无法转换数组中的返回表达式
【发布时间】:2016-08-03 22:21:16
【问题描述】:

我有一个这样声明的数组:

var myArray = [Int]()

我还有一个功能:

func myFunc(num:Int) -> [Int] {
    return myArray.append(num)
}

我不断收到错误消息:“无法将类型 '()' 的返回表达式转换为返回类型 '[Int]'”

有人可以向我解释发生了什么吗?谢谢!

【问题讨论】:

  • 应该是myArray.append(num),然后是return myArray

标签: arrays swift types


【解决方案1】:

我认为正在发生的事情是你试图返回 Array.append() 的返回值,它是 null。相反,只需这样做:

myArray.append(num)
return myArray

【讨论】:

    【解决方案2】:

    Swift reference 声明append 函数如下:

    mutating func append(_ newElement: Element)
    

    请注意,缺少返回类型,即声明中没有 -> 部分。这意味着append 不能在表达式中使用。

    您需要做的是在一行追加并在另一行返回。

    【讨论】:

    • 明白了,现在完全有道理了。感谢您的进一步详细解释!
    • @user3353890 不客气。 Swift 错误消息有时并不完美,因此 Apple 的方法文档在这种情况下可能会派上用场。
    【解决方案3】:

    方法myArray.append(num) 不返回[Int] 类型的对象(它是无效的,意味着它不返回任何东西),所以您必须这样编写代码:

    func myFunc(num:Int) -> [Int] {
        myArray.append(num)
        return myArray
    }
    

    【讨论】:

    • 啊,我明白了,很有趣...这已经帮我解决了,谢谢!
    • 没问题,乐于助人。
    猜你喜欢
    • 2018-07-31
    • 1970-01-01
    • 2018-06-06
    • 2021-01-18
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多