我有三個符合相同物件型別(協議)的類。
class Bicycle: Vehicle {}
class Car : Vehicle {}
class Truck: Vehicle {}
class Bus : Vehicle {}
我有一個包含上述類的物件的陣列,例如
let vehicle1 = Car()
let vehicle2 = Bicycle()
let vehicle3 = Truck()
let vehicle4 = Car()
let vehicle5 = Bus()
let listOfVehicles = [vehicle1, vehicle2, vehicle3, vehicle4, vehicle5]
現在我需要一個陣列來告訴我傳遞的引數的索引。
func getFirstIndex<T: Vehicle>(for targetObject: T) -> Int {
guard let index = listOfVehicles.firstIndex(where: { $0 is targetObject.Type })
else {
return -1
}
return index
}
如果我打電話getFirstIndex(for: vehicle3),我需要得到 2 和
如果我呼叫getFirstIndex(for: vehicle4),我需要得到 0,因為車輛 4 的型別和車輛 1 的型別相同,即Car.
但是我收到編譯錯誤“沒有更多背景關系的運算式型別不明確”。
有沒有人有任何線索。
uj5u.com熱心網友回復:
只需替換targetObject.Type為T
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/370264.html
上一篇:為什么這個Java泛型方法呼叫不明確,而只有一種方法在分離時有效?
下一篇:如何將C 模板實體傳遞給函式?
