我如何确定一个对象是否是数组中的最后一个(Swift 语言)

How do I find out if an object is the last in an array (in Swift language)

我在 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
    }
})

和Xcode显示注释中的错误。

我想做的是测试被迭代的对象是否是数组中的最后一个对象?我该如何编码?谢谢!

您第一次尝试 === 需要任务 类(=== 比较引用)。您的第二次尝试需要任务 Equatable。但是,即使您实现了 Equatable,使用 == 来检查任务是否是数组中的最后一个也不是一个好主意。

你想做的事情通常使用索引来完成:

for (offset, myTask) in myTasks.enumerated() {
   if offset + 1 == myTasks.count {

   }
}

这通常更安全,因为它可以防止相同的 task 在数组中多次出现时出现问题。

另一种选择是将两种情况的代码分开(可能不是您的最佳选择):

for myTask in myTasks.dropLast() {
   // handle all tasks except the last one
}

if let lastTask = myTasks.last {
   // handle last task
}