首页 > 解决方案 > 将方法乘以 Swift 中的属性

问题描述

大家好!我想知道如何实现将与某个类关联的方法相乘的能力

例如,我有 UITextField 的自定义类,我想以任何我需要的方式配置它。我如何处理它以获得有点myTextField.configure().addSomeExtraFeatures().andOneMoreMethod() 像 RxSwift 中的结果viewModel.fetch().rx.asObservable.bind(to: ...

谁能告诉我一些解决的方向?:) 任何线索,请即使正确调用此过程也会很有用

标签: swiftcustomizationextension-methods

解决方案


在每个函数中返回 self 并使用 @discardableResult 属性,因此无需关心返回。有关@discardableResult 的更多信息:https ://www.avanderlee.com/swift/discardableresult/

您的 UITextField 自定义类应该是这样的。

class CustomTextField: UITextField {
    
    @discardableResult
    func configure() -> Self {
        // Do your code here
        return self
    }
    
    @discardableResult
    func addSomeExtraFeatures() -> Self {
        // Do your code here
        return self
    }
    
    @discardableResult
    func andOneMoreMethod() -> Self {
        // Do your code here
        return self
    }
}

用法:

创建 CustomTextField 的实例并调用函数。

let customTextField: CustomTextField = CustomTextField()

customTextField.configure().addSomeExtraFeatures()

推荐阅读