gpt4 book ai didi

generics - 在 Swift 中使用 Equatable 将对象作为属性进行比较

转载 作者:搜寻专家 更新时间:2023-11-01 06:10:26 25 4
gpt4 key购买 nike

AMRoute 类有两个类型为 AMCity 类的属性,city1 和 city2。许多 AMRoutes 存储在数组 arrayOfRoutes 中。创建新路线时,我首先需要确保不存在两个给定城市的路线。

我很难翻译这段有效的 Obj-C 代码:

-(void)createRouteFromCity:(AMCity*)city1 toCity:(AMCity*)city2 {

BOOL routeExists = NO;
for (AMRoute *route in self.arrayOfRoutes) {
if (((route.city1 == city1) && (route.city2 == city2)) || ((route.city2 == city1) && (route.city1 == city2))) {
routeExists = YES;
}
}

据我了解,我不能像以前在 Obj-C 中那样使用“==”运算符来比较对象。我在搜索主题时找到的示例将我指向泛型:

    func createRoute(city1: AMCity, city2: AMCity) {

var routeExists = false

findIndex(self.arrayOfRoutes, valueToFind: <#T#>) //i am not sure how to call this?
for route:AMRoute in self.arrayOfRoutes {
println("The city is: \(route.city1.name)")

}

}

func findIndex<T: Equatable>(array: [T], valueToFind: T) -> Int? {
for (index, value) in enumerate(array) {
if value == valueToFind {
return index
}
}
return nil
}

我不确定如何将其纳入我的案例。我不需要比较数组中的 AMRoute 对象。我需要将存储为 AMRoute、city1 和 city2 属性的对象与 AMCity 对象进行比较。

最佳答案

您可以使用“===”相同的运算符在 swift 中比较对象。

关于generics - 在 Swift 中使用 Equatable 将对象作为属性进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26024336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com