ike*_*8me -1 arrays swift swift4 swift4.2
我在Swift 4.2.1中有以下代码
for myTask in myTasks {
if myTask === myTasks.last! {
// Binary operator '===' cannot be applied to two 'Task' operands
}
}
myTasks.forEach({ myTask in
if myTask == myTasks.last! {
// Binary operator '==' cannot be applied to two 'Task' operands
}
})
Run Code Online (Sandbox Code Playgroud)
和Xcode在评论中显示错误.
我想要做的是测试迭代的对象是否是数组中的最后一个对象?我该如何编码呢?谢谢!
您的第一次尝试===将要求任务成为类(===比较引用).你的第二次尝试需要完成任务Equatable.但是,即使您实现Equatable,使用它==来检查任务是否是数组中的最后一个也不是一个好主意.
你想要做的通常是使用索引完成的:
for (offset, myTask) in myTasks.enumerated() {
if offset + 1 == myTasks.count {
}
}
Run Code Online (Sandbox Code Playgroud)
这通常更安全,因为它可以防止task在阵列中多次出现问题时出现问题.
另一种选择是为两种情况分开代码(可能不是最适合您的选择):
for myTask in myTasks.dropLast() {
// handle all tasks except the last one
}
if let lastTask = myTasks.last {
// handle last task
}
Run Code Online (Sandbox Code Playgroud)