我有一個協議,符合類和一個類與一個簡單的功能。調用可選類型的靜態函數
protocol Outputable {
static func output()
}
class Foo: Outputable {
static func output() {
print("output")
}
}
class Bar {
func eat(_ object: AnyObject?) {
if let object = object, let objectType = type(of: object) as? Outputable.Type {
objectType.output()
}
}
}
let foo = Foo()
let bar = Bar()
var fooOptional: Foo?
bar.eat(foo) // prints 'output'
bar.eat(fooOptional) // print nothing
有沒有辦法通過一些可選類型是零,但符合Outputable
協議,並調用內部eat
功能協議的靜態函數?即使它是零,我仍然通過一種類型,這就是我應該需要在裏面吃,對吧?
爲了更清楚。我知道爲什麼最後一行什麼都不打印但有沒有辦法調整eat
來打印'輸出'字符串?
這就是我所需要的。謝謝! –