我如何确定一个对象是否是数组中的最后一个(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
}
我在 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
}