1

AMRoute 类有两个属性,city1 和 city2,类型为 AMCity 类。大量 AMRoute 存储在一个数组 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 对象进行比较。

4

1 回答 1

5

您可以使用“===”相同的运算符快速比较对象。

于 2014-09-25T03:39:25.483 回答