Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在[String]数组中插入元素会更改其类型_Swift - Fatal编程技术网

Swift 在[String]数组中插入元素会更改其类型

Swift 在[String]数组中插入元素会更改其类型,swift,Swift,finalList被推断为()而不是[String]。如果我指定类型[String],我会得到消息: 无法将类型“()”的值转换为指定的类型“[String]” 究竟为什么?您误解了错误消息 问题是sortedList.insert不返回值。(我们表示它返回()),因此不能将其分配给finalList:[String],原因很简单,它不是[String] 所以只要改变 struct Numbers { var list: [String] = [ "one&qu

finalList被推断为()而不是[String]。如果我指定类型[String],我会得到消息:

无法将类型“()”的值转换为指定的类型“[String]”


究竟为什么?

您误解了错误消息

问题是
sortedList.insert
不返回值。(我们表示它返回
()
),因此不能将其分配给
finalList:[String]
,原因很简单,它不是
[String]

所以只要改变

struct Numbers {
    var list: [String] = [
        "one",
        "two",
        "three"
    ]
    
    func returnList() -> [String] {
        var sortedList: [String] = self.list.sorted()
        var finalList: [String] = sortedList.insert("four", at: 0)
        return finalList
    }
}


因为
insert
返回
Void
aka
()
,并在原地修改数组?只需删除
finalList
变量并返回
sortedList
。请参阅关于
append
,而不是
insert
,或者关于
subtract
。我承认,知道哪些Swift方法返回值,哪些方法直接对可变目标进行操作,可能会有点混淆。您的代码将两者都作为示例。
var sortedList: [String] = self.list.sorted()
var finalList: [String] = sortedList.insert("four", at: 0)
return finalList
var sortedList: [String] = self.list.sorted()
sortedList.insert("four", at: 0)
return sortedList