下面是我写的一段小代码来解释这个问题:
class Vehicle{
var name:String = ""
var tyres: Int = 0
}
class Bus:Vehicle{
var make:String = "Leyland"
}
class Car: Vehicle{
var model:String = "Polo"
}
let myVehicles:[Vehicle] = [
Vehicle(),
Car(),
Bus()
]
for aVehicle in myVehicles{
if(aVehicle is Bus){
print("Bus found")
}
}
从代码中,我可以循环并获取Bus
类型的对象。然而,我需要一个函数来做同样的事情,并返回该类型的元素(如果可用)。我尝试使用泛型,但它不起作用。我需要这样的东西:
func getVehicle(type:T.type)->T?{
// loop through the array, find if the object is of the given type.
// Return that type object.
}
4条答案
按热度按时间6qqygrtg1#
使用
foo as? T
尝试将foo
转换为类型T
。因此,
getVehicle
可以写成:或功能上:
(Note我们需要将返回的变量指定为
Bus?
,以便getVehicle
可以推断T
。juzqafwq2#
你可以这样写:
px9o7tmv3#
你也可以使用这个:
kgqe7b3p4#
你也可以使用这个:
使用方法: