2014-08-28 42 views
2

swift中的find函數僅支持查找項目相等(==)。我想通過身份(===)找到一個項目。例如。鑑於此設置:Swift:按標識查找數組

class A {} 

let first = A() 
let last = A() 
let absent = A() 
let array = [first, last] 

我希望能夠做一些事情,如:

find(array, first) // -> 0 
find(array, last) // -> 1 
find(array, absent) // -> nil 

有誰正確的方式做到這一點在迅速?

回答

2

我無法找到一個內置的庫函數,但這應該工作:

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

相同的操作===僅被定義爲的情況下,因此 通用功能僅被定義爲<T : AnyObject>

+0

或者你可以聲明它'func findIdenticalObject(array:[AnyObject],value:AnyObject) - > Int?',沒有泛型 – newacct 2014-08-29 02:28:33