在我的一元运算符中摆脱括号的需要

时间:2016-07-13 09:11:28

标签: ios swift generics

注意! 〜只是一个示例前缀,我以后可能不会使用它。

我已经创建了一个函数,可以用来实例化一个类的实例,然后在闭包中设置一些属性。

首先我把它作为一个函数,但现在我想把它作为一个运算符。

目标是能够写下:

let view = ~UIView.self {
    $0.hidden = true
}

但是我目前的实现我必须写:

let view = (~UIView.self) {
    $0.hidden = false
}

我现在为运营商提供的代码是:

prefix operator ~ { }
prefix func ~<T: NSObject> (s: T.Type) -> ((_: (_:T) -> Void) -> T) {
    let o = T.init()
    return {
        $0(o)
        return o
    }
}

我发现我可以将其更改为后缀运算符:

postfix operator ~ {  }
postfix func ~<T: NSObject> (_: T.Type) -> ((_: (_:T) -> Void) -> T) {
    let o = T.init()
    return {
        $0(o)
        return o
    }
}

然后写下来很好:

UIView.self~ {
    $0.hidden = false
}

虽然我更愿意为前缀解决它!

0 个答案:

没有答案