0
我有一個OrderBook與預期和完成的訂單;兩者都是Ints數組。Swift - 函數參數必須符合協議和檢查是kindOf
我想要一個'添加'順序功能,它是通用的,適用於預期類和完成類;
兩個類都遵循一個協議。
我希望進行函數調用,其中傳入的對象必須符合協議;不僅如此,我想檢查的訂單是kindOf
類。
protocol EntryProtocol {
var value: Int { get set }
}
class OrderBook {
var existingOrders: [ExistingOrder] = [ExistingOrder]()
var completedOrders: [CompletedOrder] = [CompletedOrder]()
func add<C1: Any>(order: C1) where C1: EntryProtocol {
print (order is ExistingOrder.Type) // returns false
print (order is CompletedOrder.Type) // returns false
// i want to do a switch here
}
}
class ExistingOrder: EntryProtocol {
var value : Int
init(value: Int) {
self.value = value
}
// .. other methods
}
class CompletedOrder: EntryProtocol {
var value : Int
init(value: Int) {
self.value = value
}
// .. other methods
}
var orderBook: OrderBook = OrderBook()
let howMany = 4
for _ in 1...howMany {
let value = 3 // this is a random number (1-6)
let order = ExistingOrder.init(value: value)
orderBook.add(order: order)
}
print (orderBook.existingOrders)
print (orderBook.completedOrders)
在我迅速的操場上,add()函數,當我檢查,看看它是否是一個ExistingOrder或CompletedOrder
我如何做一個函數,其中的參數必須符合協議始終返回false ;然後檢查通過參數傳入的對象是否屬於某種類型?
非常感謝
難道不該'順序是ExistingOrder'(不'.Type') ? – rmaddy
從'is'檢查中移除'.Type' – dan
儘管因爲您需要使用鑄造對象將其添加到數組中,您應該可以執行'if let order = order as?反正現在的訂單 – dan