具有inout闭包的自定义赋值运算符

时间:2016-11-21 17:02:46

标签: swift

我试图在Swift 3中编写一个自定义赋值运算符,它允许我一次设置一个变量并更新其属性。像这样,

$(".checkbox-class").on("click", function (){
  $(".form-class").submit();
});

理论上,这将允许我写

protocol BatchSettable { }

infix operator =<

public func =< <T: BatchSettable>(lhs: inout T?, rhs: (inout T) -> Void) {
    if var copy = lhs {
        rhs(&copy)
        lhs = copy
    } else {
        lhs = nil
    }
}

而不是

struct MyStruct: BatchSettable {
    var someBoolProperty: Bool?
    var someStringProperty: String?
}

self.myStruct =< {
    $0.someBoolProperty = false
    $0.someStringProperty = "someString"
}

我的目的是能够更新值类型属性(struct)上的多个字段,而不会多次触发var myVar = self.myStruct myVar.someBoolProperty = false myVar.someStringProperty = "someString" self.myStruct = myVar

操作员本身编译时没有错误,但是当我尝试使用它时,我得到了

didSet

有什么想法吗?

0 个答案:

没有答案