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