函數參數類型,我想通過擴展編寫一個函數,讓我們UIView
說。該函數應具有與獲取所調用函數的對象相同類型的參數,例如,可以在塊實施,當然其實際類型的可以使用UIButton
或UIImageView
。使用自給作爲擴展
一如往常,代碼可以解釋最好:
extension UIView {
func performOnMe<T>(_ block: (_ obj: T) -> Void) -> T {
block(self)
return self
}
}
let button = UIButton(frame: CGRect.zero)
button.performOnMe { $0.alpha = 1 }
.performOnMe { $0.setTitle("Title", for: .normal) }
.performOnMe { $0.backgroundColor = UIColor.red }
let image = UIImageView(frame: CGRect.zero)
image.performOnMe { $0.alpha = 1 }
.performOnMe { $0.image = nil }
當然,這片斷不編譯,因爲斯威夫特不能推斷T的類型,那就是challange中。我將如何解決這個問題?它有可能嗎?
你大概意思'的UIImageView '在第二個例子... –
你說得對,對不起,拼寫錯誤,在StackOverflow的編輯器。 – Funkybit