mutating func
即使在方法中使用关键字,我也无法修改我的模型类变量?
所以基本上我已经用一种非常简单的方式解决了我的问题,我有一个Car
有 3 个变量的类id
,start
和modelNo
之后初始化一个空的 Car 模型数组,然后我想展示 10 辆汽车,创建一个循环的范围来迭代1...10
,初始化 Car 模型类并将其附加到原始汽车数组。
检查前 5 辆汽车 id 为 0,最后 5 辆汽车 id 为 1
我想要一个过滤器,其中相同 id 的最后一辆车将启动,所以我创建了一个过滤并修改 start 变量但无法修改它的方法。你能帮我做错什么吗?
请查看我的完整代码并将其复制粘贴到操场上。
struct Car {
var id = 0
var start = false
var modelNo: String
init(start: Bool, id: Int, model: String) {
self.start = start
self.id = id
self.modelNo = model
}
mutating func startCar(status: Bool) {
start = status
}
}
var arrCars:[Car] = [Car]()
for i in 1...10 {
let md = Car(start: false, id: i <= 5 ? 0 : 1, model: "Model\(i)")
arrCars.append(md)
}
private func filtered() {
for item in arrCars {
let filteredItems = arrCars.filter { $0.id == item.id }
if filteredItems.count > 0 {
if var lastItem = filteredItems.last {
print("Will start \(lastItem.modelNo)")
lastItem.startCar(status: true)
}
}
}
let cars = arrCars.filter { (car) -> Bool in
car.start == true
}
print(cars.count)
}
filtered()
任何帮助将不胜感激。