Swift三箭头符号

时间:2018-04-29 10:59:55

标签: swift

我在swift 4.0 source code中看到了'>>> - '符号,我在文档中搜索了这个符号的引用我找不到它,Xcode抛出了我错误Use of unresolved operator '>>>-'

有人可以解释这个符号是什么意思吗?为什么呢?

感谢

1 个答案:

答案 0 :(得分:2)

Swift不提供该运算符。它是由该库的作者定义的自定义运算符。

您可以在另一个file中找到该定义:

precedencegroup constOp {
    associativity: left
    higherThan: AssignmentPrecedence
}

infix operator >>>-: constOp

@discardableResult
func >>>- <T: UIView>(left: (T, T), block: (inout ConstraintInfo) -> Void) -> NSLayoutConstraint {
    var info = ConstraintInfo()
    block(&info)
    info.secondAttribute = info.secondAttribute == .notAnAttribute ? info.attribute : info.secondAttribute

    let constraint = NSLayoutConstraint(item: left.1,
                                        attribute: info.attribute,
                                        relatedBy: info.relation,
                                        toItem: left.0,
                                        attribute: info.secondAttribute,
                                        multiplier: 1,
                                        constant: info.constant)
    constraint.identifier = info.identifier
    left.0.addConstraint(constraint)
    return constraint
}

由于函数func >>>- <T: UIView>(left: (T, T), block: (inout ConstraintInfo) -> Void) -> NSLayoutConstraint未声明为公共,因此您无法在其声明模块之外使用它。